题面 样例
题目描述
有一个长度为 n 的序列 p1,p2,...,pn,满足 pi=i。你需要依次进行 k 次操作,每次操作形如:
选择一个参数 x∈[0,n),将 p 的最后 x 个元素取出,将这 x 个元素重新插入到前 n−x 个元素中。插入的位置可以不连续,但是必须保证这 x 个元素的相对顺序不变。例如 p={1,2,3,4,5},x=2,则可能的操作结束后的序列有 $\{4,1,2,5,3\},\{1,2,4,5,3\},\{1,4,2,3,5\},\{1,2,3,4,5\}$ 等。
设 k 次操作选择的参数为 x1,x2,..,xk。则操作总代价为 ∑i=1kcixi。
现在给出一个序列 q1,q2,...,qn。问能否将 p 通过上述的 k 次操作变化为 q。若能,则需要求出最小的操作代价。
输入格式
从 ins.in
中读入。
第一行两个正整数 n,k。
第二行 k 个正整数 c1,c2,...,ck。
第三行 n 个正整数 q1,q2,...,qn。
输出格式
输出到 ins.out
中。
如果无解输出 -1
;否则输出最小操作代价。
样例输入 1
4 1
3
3 1 2 4
样例输出 1
6
数据范围
对于所有数据,保证 2≤n≤100,1≤k≤100,1≤ci≤109 且 qi 是 1∼n 的排列。
对于测试点 1∼2,满足 n,k≤5。
对于测试点 3∼4,满足 k=1。
对于测试点 5∼6,满足 n,k≤20。
对于测试点 7∼8,满足 n,k≤50。
对于测试点 9∼10,无特殊约束。