Cod sursa(job #27310)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 6 martie 2007 12:26:55
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>

int n,S;
int sol[2],poz[2],pozs[2],m[2],l[2];

int main()
{
        int i,x,j;
		freopen("buline.in","r",stdin);
		freopen("buline.out","w",stdout);
        scanf("%d",&n);
        scanf("%d %d",&x,&j);
        if(!j)
         	x=-x;
		S=x;
		l[0]=1,poz[0]=pozs[0]=1,sol[0]=m[0]=x;
		l[1]=n-1,poz[1]=pozs[1]=2,sol[1]=m[1]=x;
        for(i=1;i<n;++i)
        {

                scanf("%d %d",&x,&j);
                if(!j)
                        x=-x;
                S+=x;
				if(m[0]<0)
					m[0]=0,poz[0]=i;
				if(m[1]>0)
					m[1]=0,poz[1]=i;
				m[0]+=x,m[1]+=x;

				if(m[0]>sol[0])
					sol[0]=m[0],pozs[0]=poz[0],l[0]=i-poz[0]+1;

				if(m[1]<sol[1])
					sol[1]=m[1],pozs[1]=(i+1)%n+1,l[1]=n-i+poz[1]-1;
        }

		if(S-sol[1]>sol[0]||(S-sol[1]==sol[0]&&pozs[0]>pozs[1])||
				(S-sol[1]==sol[0]&&pozs[0]==pozs[1]&&l[0]>l[1]))
			sol[0]=S-sol[1],pozs[0]=pozs[1],l[0]=l[1];

		printf("%d %d %d\n",sol[0],pozs[0],l[0]);

        return 0;
}