求调D/kel
  • 板块学术版
  • 楼主Hughpig
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/22 21:45
  • 上次更新2024/11/23 08:40:48
查看原帖
求调D/kel
646208
Hughpig楼主2024/11/22 21:45

WA *2,找不出啥错误。

/ll

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(l,r,i) for(int i=(l);i<=(r);++i)
constexpr int N=2e5+9;

ll n,a[N],l=1,r=0,qwq,ans;
map<ll,ll> cnt;

int main()
{
	cin>>n;up(1,n,i)cin>>a[i];
	while(r<n){
		while(r<n){
			++r;++cnt[a[r]];
			if(cnt[a[r]]==2||cnt[a[r]]==0)--qwq;
			else ++qwq;
			if(qwq==0)ans=max(ans,r-l+1);
			if(cnt[a[r]]>2)break;
		}
		while(cnt[a[r]]>2&&l<r){
			cnt[a[l]]--;
			if(cnt[a[l]]==2||cnt[a[l]]==0)--qwq;
			else ++qwq;
			++l;
			if(qwq==0)ans=max(ans,r-l+1);
		}
	}
	while(l<r){
		cnt[a[l]]--;
		if(cnt[a[l]]==2||cnt[a[l]]==0)--qwq;
		else ++qwq;
		++l;
		if(qwq==0)ans=max(ans,r-l+1);
	}
	cout<<ans;
	return 0;
}
2024/11/22 21:45
加载中...