70分求助 ,若解决,蒟蒻必关
查看原帖
70分求助 ,若解决,蒟蒻必关
253520
Nickhozell楼主2023/12/13 16:46
整体代码较为抽象,但基本思想依旧是前缀和
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,x;
struct node{
	int s0,s1;
}a[200005];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&x);
		if(x==0){
			a[i].s0=a[i-1].s0+1;
			a[i].s1=a[i-1].s1;
		}
		else{
			a[i].s1=a[i-1].s1+1;
			a[i].s0=a[i-1].s0;
		}
	}
	for(int i=2;i<=n;i++){
		for(int j=i%2;j<=n-m-2;j+=2){
			if(a[i].s0-a[j].s0==a[i].s1-a[j].s1){
				if(i-j>m){
					m=i-j;
					break;
				}
			}
		}
	}
	cout<<m;
	return 0;
}
2023/12/13 16:46
加载中...