看题解后头脑风暴,不会做TAT
查看原帖
看题解后头脑风暴,不会做TAT
799098
chengzihan620楼主2023/11/8 17:17
#include<bits/stdc++.h>
namespace myio{
	inline void read(int &x){
		int f=1;x=0;
		char c=getchar();
		while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
		while(isdigit(c)){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
		x*=f;
	}
	void write(int x){
		if(x){
			if(x<0){x=-x;putchar('-');}
			putchar(x%10+'0');
			write(x/10);
		}
	}
}
using namespace std; using namespace myio;
int s[100001],a[100001];
int main(){
	int n;
	bool flag=true;//判断是否有解
	read(n);
	for(int i=1;i<=n;i++){
		read(a[i]);
		if(a[i])s[i]=s[i-1]+1;//前缀和
		else s[i]=s[i-1]-1;
	}
	for(int i=n-2;i>0;i-=2){//枚举长度
		for(int j=1;j<=n-i;j++)//枚举起点
			if(s[j+i-1]==s[j]){//合法
				write(i);
				flag=false;
				break;	
			}
	}
	if(flag)write(0);
  	return 0;
}
2023/11/8 17:17
加载中...