配点 : 700 点
問題文
1 から N までの整数からなる順列 A=(A1,A2,…,AN) があります。はじめ Ai=i (1≤i≤N) です。
高橋君はこの順列に対し以下のような操作を K 回行います。
- 0≤k<N を満たす整数 k を選ぶ。A の後ろ k 項を前 N−k 項に挿入する。より正確には、A を以下の条件を満たす長さ N の好きな順列 A′ で置き換える。- (A1,A2,…,AN−k) は A′ の(連続とは限らない)部分列である。
- (AN−k+1,AN−k+2,…,AN) は A′ の(連続とは限らない)部分列である。
- (A1,A2,…,AN−k) は A′ の(連続とは限らない)部分列である。
- (AN−k+1,AN−k+2,…,AN) は A′ の(連続とは限らない)部分列である。
i 回目の操作で選んだ k を ki としたとき、一連の操作にかかるコストは ∑i=1KkiCi です。
高橋君は K 回の操作の後、A=(P1,P2,…,PN) が成り立つように操作を行いたいです。
そのように一連の操作を行うことが可能か判定してください。可能な場合、そのような一連の操作にかかるコストの最小値を求めてください。
制約
- 2≤N≤100
- 1≤K≤100
- 1≤Ci≤109
- (P1,P2,…,PN) は 1 から N までの整数からなる順列
- 入力される値はすべて整数
入力
入力は以下の形式で標準入力から与えられます。
N K
C1 C2 … CK
P1 P2 … PN
出力
K 回の操作の後、A=(P1,P2,…,PN) が成り立つように操作を行うことが不可能な場合、 -1
を出力してください。可能な場合、そのような一連の操作のコストの最小値を出力してください。
4 1
3
3 1 2 4
6
操作で k=2 とし、A3=3 を A1,A2 より前に、 A4=4 を A1,A2 の後に挿入することで A=(3,1,2,4) とすることができ、 A=(P1,P2,P3,P4) が成り立ちます。この操作のコストは 2×C1=6 です。
操作後、 A=(P1,P2,P3,P4) が成り立つように操作するとき、コストの最小値は 6 であることが証明できます。
4 1
3
4 3 2 1
-1
操作後、A=(P1,P2,P3,P4) が成り立つように操作することはできません。
20 10
874735445 684260477 689935252 116941558 915603029 923404262 843759669 656978932 286318130 255195090
11 15 20 10 6 8 18 2 12 4 9 13 19 3 16 7 14 17 5 1
7372920743