#agc062b. [agc062_b]Split and Insert

[agc062_b]Split and Insert

問題文

11 から NN までの整数からなる順列 A=(A1,A2,dots,AN)A=(A_1,A_2,\\dots,A_N) があります。はじめ Ai=i(1leqileqN)A_i=i\\ (1\\leq i \\leq N) です。

高橋君はこの順列に対し以下のような操作を KK 回行います。

  • 0leqk<N0 \\leq k < N を満たす整数 kk を選ぶ。AA の後ろ kk 項を前 NkN-k 項に挿入する。より正確には、AA を以下の条件を満たす長さ NN の好きな順列 AA' で置き換える。
    • (A1,A2,dots,ANk)(A_1,A_2,\\dots,A_{N-k})AA' の(連続とは限らない)部分列である。
    • (ANk+1,ANk+2,dots,AN)(A_{N-k+1},A_{N-k+2},\\dots,A_{N})AA' の(連続とは限らない)部分列である。

ii 回目の操作で選んだ kkkik_i としたとき、一連の操作にかかるコストは sumi=1KkiCi\\sum_{i=1}^{K}k_iC_i です。

高橋君は KK 回の操作の後、A=(P1,P2,dots,PN)A=(P_1,P_2,\\dots,P_N) が成り立つように操作を行いたいです。

そのように一連の操作を行うことが可能か判定してください。可能な場合、そのような一連の操作にかかるコストの最小値を求めてください。

制約

  • 2leqNleq1002 \\leq N \\leq 100
  • 1leqKleq1001 \\leq K \\leq 100
  • 1leqCileq1091 \\leq C_i \\leq 10^9
  • (P1,P2,dots,PN)(P_1,P_2,\\dots,P_N)11 から NN までの整数からなる順列
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

NN KK C1C_1 C2C_2 dots\\dots CKC_K P1P_1 P2P_2 dots\\dots PNP_N

出力

KK 回の操作の後、A=(P1,P2,dots,PN)A=(P_1,P_2,\\dots,P_N) が成り立つように操作を行うことが不可能な場合、 -1 を出力してください。可能な場合、そのような一連の操作のコストの最小値を出力してください。


入力例 1

4 1
3
3 1 2 4

出力例 1

6

操作で k=2k=2 とし、A3=3A_3=3A1,A2A_1,A_2 より前に、 A4=4A_4=4A1,A2A_1,A_2 の後に挿入することで A=(3,1,2,4)A=(3,1,2,4) とすることができ、 A=(P1,P2,P3,P4)A=(P_1,P_2,P_3,P_4) が成り立ちます。この操作のコストは 2timesC1=62 \\times C_1 = 6 です。

操作後、 A=(P1,P2,P3,P4)A=(P_1,P_2,P_3,P_4) が成り立つように操作するとき、コストの最小値は 66 であることが証明できます。


入力例 2

4 1
3
4 3 2 1

出力例 2

-1

操作後、A=(P1,P2,P3,P4)A=(P_1,P_2,P_3,P_4) が成り立つように操作することはできません。


入力例 3

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

出力例 3

7372920743