Pagini recente » Cod sursa (job #1512719) | Cod sursa (job #1595541) | Cod sursa (job #748966) | Cod sursa (job #252303) | Cod sursa (job #1409409)
#include <cstdio>
using namespace std;
long a[200001],tip,smax,smax2,s,n,cycle;
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
scanf("%ld",&n);
for(long i=1;i<=n;i++)
{
scanf("%ld%ld",&a[i],&tip);
if(!tip) a[i]*=(-1);
}
cycle=1;long begin=0;
for(long i=1;i<=n;i++)
{
s=s+a[i];
if(s>smax)
smax=s;
if(s<0)
{
s=0;
begin=i+1;
}
if(i==n && cycle==1)
cycle=2,i=0;
if(cycle==2 && i==begin-1)
break;
}
if(s>smax) smax=s;
s=0;
begin=0;
cycle=1;
for(long i=1;i<=n;i++)
a[i]*=-1;
for(long i=1;i<=n;i++)
{
s=s+a[i];
if(s>smax2)
smax2=s;
if(s<0){
s=0;
begin=i+1;
}
if(i==n && cycle==1)
cycle=2,i=0;
if(cycle==2 && i==begin-1)
break;
}
if(s>smax2)
smax2=s;
if(smax>smax2)
printf("%ld\n",smax);
else printf("%ld\n",smax2);
return 0;
}