Cod sursa(job #128582)

Utilizator katakunaCazacu Alexandru katakuna Data 27 ianuarie 2008 14:22:09
Problema Buline Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
int s,max,p,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];
  }
fclose(f);

min=v[1];k=1;

 for(i=2;i<=n;i++){
   if(v[i]<min){
   min=v[i];
   k=i;
   }

 }

y[k]=0;
max=y[k+1];p=k+1;

 for(i=k+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]>max){p=i;max=y[i];}

 }

y[0]=y[n];

  for(i=1;i<=k;i++){

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

   else y[i]=v[i];

  if(y[i]>max){p=i;max=y[i];}

 }

i=p;
k=0;

 while(s!=max){
 k++;s+=v[i];
 i--;if(i==0){i=n;}
 }

 FILE *g=fopen("buline.out","w");
 fprintf(g,"%d %d %d",max,i+1,k);
 fclose(g);

return 0;
}