Cod sursa(job #270989)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 4 martie 2009 19:20:52
Problema Buline Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<stdio.h>
int poz,lung1,lung2=0,i,v[20010],n,semn,pozm1,pozm2,lungm1,lungm2=0;
long s=2000000000,smax=2000000000,S,sm=-2000000000,smaxm=-2000000000;


int main()
{

FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");

fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
   {
    fscanf(f,"%d %d",&v[i],&semn);
    if (semn==0) v[i]=v[i]*(-1);

    if (s+v[i]<=v[i])
	{
	 lung2++;
	 s=s+v[i];
	}

    else  {
       lung2=1;
       s=v[i];
      }
    if (smax<=s) ;

       else
    {
     poz=i;
     lung1=lung2;
     smax=s;
    }
    S+=v[i];
   }
poz+=1;
if (poz>n)
    poz=poz-n;
s=S-smax;
lung1=n-lung1;

for (i=1;i<=n;i++)
     {
     if (sm+v[i]>=v[i])
	 {lungm2++;
	  sm=sm+v[i];
	 }

     else  {pozm2=i;
	    lungm2=1;
	    sm=v[i];
	   }
    if (smaxm>sm) ;
    else if (smaxm==sm)
		      {if (pozm1>pozm2)
			    {pozm1=pozm2;
			     lungm1=lungm2;}
		       if (pozm1==pozm2)
			    if (lungm2<lungm1)
				  lungm1=lungm2;
		       }
	else
     {pozm1=pozm2;
      lungm1=lungm2;
      smaxm=sm;
     }
    }

sm=smaxm;
if (s>sm)
	  fprintf(g,"%ld %d %d",s,poz,lung1);

   else fprintf(g,"%ld %d %d",sm,pozm1,lungm1);

fclose(f);
fclose(g);
return 0;
}