求助
查看原帖
求助
973480
封禁用户楼主2024/11/27 22:22
#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin >> t;
	while(t--){
		int n,l=0,r=0,a[1000001],p=0,c[1000001],cnt=0,ans=INT_MIN;
		cin >> n;
        c[0]=-1;
		for(int i=1;i<=n;i++){
			cin >> a[i];
			c[i]=a[i];
			p=max(p,a[i]);
		}
		sort(c+1,c+n+1);
		for(int i=1;i<=n;i++){
			if(c[i]!=c[i-1]) cnt++;
		}
		const int k=p;
		p=0;
		int b[k+1];
		for(int i=1;i<=n;i++) b[a[i]]=0;
		while(l<=r&&r<n+1){
            int w=r-l+1;
            if(l==0) w=r;
            if(w==p){
				ans=max(ans,w);
			}
			if(p<cnt){
				r++;
				if(b[a[r]]==0){
					p++;
					b[a[r]]++;
				}
			}else{
				l++;
				b[a[l-1]]--;
				if(b[a[l-1]]==0) p--;
			}
		}
		cout << ans << endl;
	} 
	return 0;
}
2024/11/27 22:22
加载中...