雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http://codeforces.com/contest/353/problem/C

 Codeforces Round #205 (Div. 2)C

#include<stdio.h>

int s[109999];
int dp[109999];
char str[109999];
int Max(int a,int b){
    if(a<b)return b;
    else return a;
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int i;
        dp[0]=0;
        for(i=1;i<=n;i++){
            scanf("%d",&s[i]);
            dp[i]=dp[i-1]+s[i];
        }
        
        scanf("%s",str);
        int all=0,max=0;
        for(i=n-1;i>=0;i--){
            if(str[i]=='0')continue;
            max=Max(max,all+dp[i]);
            all+=s[i+1];
        }
        max=Max(all,max);
        printf("%d\n",max);
    }

    return 0;
}
View Code