#agc062b. [agc062_b]Split and Insert

[agc062_b]Split and Insert

[英文翻译]

题目描述

有一个 11NN 的整数序列的排列 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 次。

  • 选择一个整数 kk 满足 0leqk<N0 \\leq k < N。将 AA 的最后 kk 个项插入到前面的 NkN-k 个项中。更准确地说,用满足以下条件的任意排列 AA' 替换 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' 的(不一定连续的)子序列。

操作序列的代价是 sumi=1KkiCi\\sum_{i=1}^{K}k_iC_i,其中 kik_i 是第 ii 次操作选择的 kk

高桥希望执行 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)11NN 的整数的排列。
  • 输入中的所有数字都是整数。

输入

输入遵循以下格式,从标准输入给出:

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=3 插入到 A1,A2A_1,A_2 前面,将 A4=4A_4=4 插入到 A1,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