http://codeforces.com/contest/353/problem/C
Codeforces Round #205 (Div. 2)C
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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 ",max); } return 0; }