为啥错了三个点?
查看原帖
为啥错了三个点?
101809
Calereing楼主2020/10/5 16:15
#include<iostream>
using namespace std;

int n;
bool gender[100001]={0};
int boys[100001]={0};
int girls[100001]={0};
int num[100001]={0};
int first[200001]={0};
int last[200001]={0};

int main(){
	cin>>n;
	for(register int i=1;i<=n;i++){
		cin>>gender[i];
		boys[i]=boys[i-1];
		if(gender[i]) boys[i]++;
		num[i]=boys[i]*2-i;
	}
	for(register int i=1;i<=n;i++){
		if(first[num[i]+n]==0){
			first[num[i]+n]=i;
		}
		else{
			last[num[i]+n]=i;
		}
	}
	int ans=0;
	for(register int i=1;i<=n*2;i++){
		if(ans<last[i]-first[i]){
			ans=last[i]-first[i];
		}
	}
	cout<<ans;
	return 0;
}
2020/10/5 16:15
加载中...