cf C. Find Maximum

时间:2023-03-09 00:44:47
cf C. Find Maximum

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

先预处理前i个数的和,然后找到第一个出现的1,然后变成0后的和与目前的和比较,如果大就更新。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100010
using namespace std; int n;
int a[maxn];
int sum[maxn];
char str[maxn];
int k; int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(sum,,sizeof(sum));
for(int i=; i<=n; i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
}
scanf("%s",str);
int ans=;
for(int i=; i<=n-; i++)
{
if(str[i]=='')
{
ans+=a[i+];
k=i;
}
}
int max1=ans;
int c=;
for(int i=k; i>; i--)
{
if(str[i]=='')
{
max1=max(max1,sum[i]+c);
c+=a[i+];
}
}
printf("%d\n",max1);
}
return ;
}