2019牛客暑期多校训练营(第三场)

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int N=100101;
 5 int n,pre[N],num0,num1,a[N*3],ans;
 6 char c[N];
 7 int main(){
 8     scanf("%d",&n);
 9     scanf("%s",c);
10     for (int i=0;i<n;i++){
11         if (c[i]=='0'){
12             num0++;
13             pre[i]=pre[i-1]+1;
14             if (a[pre[i]+N]==0){
15                 a[pre[i]+N]=i;
16             }else{
17                 ans=max(ans,i-a[pre[i]+N]);
18             }
19         }
20         if (c[i]=='1'){
21             num1++;
22             pre[i]=pre[i-1]-1;
23             if (a[pre[i]+N]==0){
24                 a[pre[i]+N]=i;
25             }else{
26                 ans=max(ans,i-a[pre[i]+N]);
27             }
28         }
29         if (pre[i]==0){
30             ans=max(ans,i+1);
31         }
32     }
33     printf("%d %d\n",ans,2*min(num0,num1));
34 }
View Code

猜你喜欢

转载自www.cnblogs.com/Accpted/p/11246042.html
今日推荐