30pts求调
查看原帖
30pts求调
1524111
MonKeySort_ZYczc楼主2024/10/24 22:24

调了半天啊啊啊
可能是很蒟蒻的错误
不必管他 帮忙指出一下
(注释行为调试用,不必管他)


#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]<<" ";
//		}
	 }
}
2024/10/24 22:24
加载中...