农夫约翰的 N N N 头奶牛排成一排,每头奶牛都用其品种 I D ID ID 进行描述。
如果两头相同品种的牛靠得太近,它们就会吵架。
具体的说,如果同一品种的两头奶牛在队列中的位置相差不超过 K K K,我们就称这是一对拥挤的牛。
请计算品种 I D ID ID 最大的拥挤奶牛对的品种 I D ID ID。
输入格式
第一行包含两个整数
N
N
N 和
K
K
K。
接下来 N N N 行,每行包含一个整数表示队列中一头奶牛的品种 I D ID ID。
输出格式
输出品种
I
D
ID
ID 最大的拥挤奶牛对的品种
I
D
ID
ID。
如果不存在拥挤奶牛队,则输出 − 1 −1 −1。
数据范围
1
≤
N
≤
50000
,
1
≤
K
<
N
,
1≤N≤50000, 1≤K<N,
1≤N≤50000,1≤K<N,
品种
I
D
ID
ID 范围
[
0
,
106
]
。
[0,106]。
[0,106]。
输入样例:
6 3
7
3
4
2
3
4
输出样例:
4
样例解释
一对品种
I
D
ID
ID 为
3
3
3 的奶牛以及一对品种
I
D
ID
ID 为
4
4
4 的奶牛属于拥挤奶牛对。
所以,最大拥挤奶牛对的品种 I D ID ID 为 4 4 4。
简单模拟
#include<iostream>
using namespace std;
const int N = 1e6 + 10;
int n, k;
int q[N], idc[N];
int main(){
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++) scanf("%d", &q[i]);
int res = -1;
for(int i = 0; i < n; i++){
int x = q[i];
if(i > k) idc[q[i - k - 1]]--;
idc[x]++;
if(idc[x] > 1) res = max(res, x);
}
printf("%d\n", res);
return 0;
}