2015年9月12日 星期六

[HOJ]367 23213

#include<cstdio>
#include<utility>
#include<map>
#include<algorithm>
#define MAX 200005
using namespace std;
pair<int,int> tmp;
map<pair<int,int>,int> m;
char s[MAX];
int a[MAX],b[MAX],n,ans;
int main(){
    scanf("%d%s",&n,s);
    for(int i=0;i<n;i++){
        if(s[i]=='1')a[i+1]=1;
        if(s[i]=='2')a[i+1]=b[i+1]=-1;
        if(s[i]=='3')b[i+1]=1;
    }
    for(int i=0;i<=n;i++){
        if(i!=0){
            a[i]+=a[i-1];
            b[i]+=b[i-1];
        }
        tmp=make_pair(a[i],b[i]);
        if(m.count(tmp)){
            ans=max(ans,i-m[tmp]);
        }
        else m[tmp]=i;
    }
    printf("%d\n",ans);
}

沒有留言:

張貼留言