排列子序列
题目描述
给定一个排列 P=(P1,P2,…,PN),它是(1,2,…,N)的一个排列。
长度为 K 的索引序列 (i1,i2,…,iK)被称为"好的索引序列"。
如果它满足以下两个条件:
-
1≤ i1 < i2 < … < iK ≤ N。
-
子序列 (Pi1,Pi2,…,PiK) 可以通过重新排列某些连续的 K 个整数得到。形式上,存在一个整数 a 使得 $ \lbrace\ P_{i_1},P_{i_2},\dots,P_{i_K}\ \rbrace\ =\ \lbrace\ a,a+1,\dots,a+K-1\ \rbrace $。
在所有好的索引序列中,找出 iK−i1 的最小值。在这个问题的约束条件下,可以证明至少存在一个好的索引序列。
输入格式
输入将从标准输入中以下列格式给出:
N K
P1 P2 … PN
输出格式
输出所有好的索引序列中 iK−i1 的最小值。
输入输出样例 #1
输入 #1
4 2
2 3 1 4
输出 #1
1
输入输出样例 #2
输入 #2
4 1
2 3 1 4
输出 #2
0
输入输出样例 #3
输入 #3
10 5
10 1 6 8 7 2 5 9 3 4
输出 #3
5
说明/提示
样例 1 解释
好的索引序列有 (1,2),(1,3)(2,4)。例如 (i1,i2)=(1,3) 是一个好的索引序列,因为 1≤i1<i2≤N 且 (Pi1,Pi2)=(2,1) 是两个连续整数 1,2 的重新排列。
在这些好的索引序列中,iK−i1 的最小值是 (1,2) 的情况,即 2−1=1。
样例 2 解释
在所有好的索引序列中,iK−i1=i1=i1=0
数据范围
- 1≤ K ≤ N ≤ 2× 105
- 1≤ Pi≤ N
- 如果 i= j 则 Pi= Pj
- 所有输入值都是整数。