Cod sursa(job #1409409)

Utilizator stefan.friptuPetru Stefan Friptu stefan.friptu Data 30 martie 2015 15:15:40
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}