传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3048
显然如果相同两点之间有多于k个元素那么他们不可能相连
Code:
#include<bits/stdc++.h>
using namespace std;
int n,k,ans;
map<int,int>M;
deque<int>q;
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
M[x]++;q.push_back(x);
while(M.size()>k+1){
ans=max(ans,M[q.front()]);
if(!--M[q.front()])
M.erase(q.front());
q.pop_front();
}ans=max(ans,M[q.front()]);
}
while(!q.empty()){
ans=max(ans,M[q.front()]);
M[q.front()]--;
q.pop_front();
}cout<<ans<<endl;
}