163. 优秀数组
内存限制:256 MB
时间限制:1.000 S
题目描述
小红有一个长度为 n 的排列 p,其中 1 到 n 的每个数都恰好出现一次,pos[i] 表示排列中元素 i 的下标。例如 p = [3,2,4,5,1],则 pos = [5,2,1,3,4]。还有一个长度为 m 的数组 a,数组的元素互不相同,即 ai != aj,如果满足 pos[a[i]] < pos[a[i+1]] <= pos[a[i]] + d,则认为 a 是一个优秀的数组。
现在给定长度为 n 的排列 p,以及长度为 m 的数组a1, a2, ... am,小红想知道最少需要多少次操作可以将数组变的不优秀,每次操作可以交换排列 p 的相邻元素,对应的 pos 数组也会发生变化。
输入
一行三个整数 n, m, d(2 <= m <= n <= 10^5), 表示排列的长度, 数组的长度以及 d 的值。
一行 n 个整数 p1, p2, ..., pn,表示排列 p。一行 m 个整数 a1, a2, ..., am,表示数组 a。
输出
输出一个整数表示最少需要多少次操作。
样例输入 复制
5 2 2
3 2 4 5 1
3 4
样例输出 复制
1
提示
只需要交换 4,5 得到 p = [3,2,5,4,1], 这样 a = [3,4] 就不是优秀数组了。