调了半天啊啊啊
可能是很蒟蒻的错误
不必管他 帮忙指出一下
(注释行为调试用,不必管他)
#include<bits/stdc++.h>
using namespace std;
int n,qz[3][114514];bool a[114514],flag=true,temp;
bool check(int k)
{
int sumb=0,sumg=0;
for(int i=1;i<n-k+1;i++)
{
if(qz[1][i+k]-qz[1][i-1]==qz[2][i+k]-qz[2][i-1]) return true;
}
return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(i==1) temp=a[i];
else
{
if(temp!=a[i]) flag=false;
}
qz[a[i]+1][i]=qz[a[i]+1][i-1]+1;
qz[(!a[i])+1][i]=qz[(!a[i])+1][i-1];
}
if(flag==true) cout<<0;
else
{
int l=2,r=n-n%2,mid;
while(l<r)
{
mid=(l+r+1)/2;
if(check(mid)) l=mid;
else r=mid-1;
}
if(check(l)) cout<<l+1;
else cout<<l;
// for(int i=1;i<=n;i++)
// {
// cout<<qz[1][i]<<" ";
// }
// cout<<endl;
// for(int i=1;i<=n;i++)
// {
// cout<<qz[2][i]<<" ";
// }
}
}