为什么80?
查看原帖
为什么80?
782898
Time_Limit_Exceed楼主2022/9/30 13:11
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int b[N],g[N],s[N],k1[N],k2[N];
bool vis[N];
int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]==1) b[i]=1;
		else g[i]=1;
	}
	int maxn=-1;
	for(int i=1;i<=n;i++){
		b[i]+=b[i-1];
		g[i]+=g[i-1];
		if(b[i]>g[i]) s[i]=b[i]-g[i];
		else s[i]=g[i]-b[i];
		maxn=max(maxn,s[i]);
		if(!vis[s[i]]){
			vis[s[i]]=1;
			k1[s[i]]=i;
		}
		else k2[s[i]]=i;
	}
	bool fb=0,fg=0;
	for(int i=1;i<=n;i++){
		if(b[i]) fb=1;
		if(g[i]) fg=1;
		if(fb&&fg) break;
	}
	if((!fb)||(!fg)){
		cout<<0<<endl;
		return 0;
	}
	int ans=0;
	for(int i=1;i<=maxn;i++){
		ans=max(ans,k2[i]-k1[i]);
	}
	cout<<ans<<endl;
	return 0;
}
2022/9/30 13:11
加载中...