Cod sursa(job #271934)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 6 martie 2009 09:06:41
Problema Buline Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 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;  
}