60pts球跳
查看原帖
60pts球跳
661913
liwenxi1145144444楼主2024/7/15 09:51
#include<bits/stdc++.h>
using namespace std;
int sum,n,k,a[100005],maxn=-1;
unordered_map<int,int> vis;
struct node{
	int sum,x;
	bool friend operator < (node a,node b){
		return a.sum>b.sum;
	}
};
set<node> s;
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int l=1,r=1;
	while(r<=n){
		if(!vis[a[r]]){
			sum++;
		}else{
			s.erase({vis[a[r]],a[r]});
		}
		vis[a[r]]++;
		s.insert({vis[a[r]],a[r]});
		if(sum==k+1){
			maxn=max(maxn,(*s.begin()).sum);
		}
		if(sum>k+1){
			vis[a[l]]--;
			if(!vis[a[l]]){
				sum--;
			}
			l++;
		}
		r++;
	}
	cout<<maxn;
	return 0;
}
2024/7/15 09:51
加载中...