#include<bits/stdc++.h>
using namespace std;
int n,ans=2,a[100001],na[100001],wo[100001],z[100001],ansl,w,w1;
map<int,int>q;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
na[i]=na[i-1];wo[i]=wo[i-1];
if(a[i])na[i]+=1;
else wo[i]+=1;
z[i]=na[i]-wo[i];
if(!q[z[i]])q[z[i]]=i;
else ans=max(ans,i-q[z[i]]);
}
cout<<ans<<endl;
return 0;
}
总体就是如果数列中两个位置s男-s女相等,那么中间的男生和女生数量就要相等。
大佬帮帮忙!