Cod sursa(job #128632)

Utilizator katakunaCazacu Alexandru katakuna Data 27 ianuarie 2008 15:46:52
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
int suma,s,max1,p1,p2,min,k,n,i,c,v[200001],y[200001];

int main(){
FILE *f=fopen("buline.in","r");
fscanf(f,"%d",&n);
  for(i=1;i<=n;i++){
  fscanf(f,"%d %d",&v[i],&c);
   if(c==0)v[i]=-v[i];
  suma+=v[i];
  }
fclose(f);

//nu e circ

for(i=1;i<=n;i++){
 if(v[i]+y[i-1]>v[i]){
 y[i]=v[i]+y[i-1];
 }
 else{y[i]=v[i];}

 if(y[i]>max1){max1=y[i];p1=i;}

}


for(i=1;i<=n;i++){
 if(v[i]+y[i-1]<v[i]){
 y[i]=v[i]+y[i-1];
 }
 else{y[i]=v[i];}

 if(y[i]<min){min=y[i];p2=i;}

}

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

   if(suma-min>max1){
     i=p2+1;

     while(s!=min){
     i--;
     s+=v[i];
     
     }

   fprintf(g,"%d %d %d",suma-min,p2+1,n-(p2-i+1));
   }

   else{
   i=p1+1;
     while(s!=max1){
     i--;
     s+=v[i];
     
     }

   fprintf(g,"%d %d %d",max1,p1,p1-i+1);

   }


fclose(g);

return 0;
}