如果60pts
查看原帖
如果60pts
556656
虫二bug2楼主2024/3/22 23:54
#include<bits/stdc++.h>
#define N 100001
using namespace std;
int n,a[N],b[2*N],ans=0;
int main(){
    scanf("%d",&n);
    for(int i=0;i<=(2*n);i++)b[i]=-1;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if(a[i]==0)a[i]=-1;
        a[i]+=a[i-1];
        if(a[i]==0)ans=max(ans,i);
        else if(b[a[i]+n]==-1)b[a[i]+n]=i;
        else ans=max(ans,i-b[a[i]+n]);
    }
    printf("%d",ans);
}

1:可能有全0,b[0]要初始化

2:b[0]初始化要增加a[i]为0特判

3:b[]要开到2*N

2024/3/22 23:54
加载中...