Cod sursa(job #36829)

Utilizator kyrkDragos Dumitrescu kyrk Data 24 martie 2007 09:47:15
Problema Buline Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
main()
{
long  a[500000],i,j,k,incmax,finmax,x,sp,valid,n,s,smax,inc,fin;
FILE *f,*g;
f=fopen("buline.in","r");
g=fopen("buline.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
 { fscanf(f,"%ld%ld",&k,&sp);
   if(sp==0)k*=-1;
   a[i]=k;
   a[n+i]=k;
 }
k=n;k*=2;k--;
i=1;
do{ valid=0;
    if(a[i]<0){valid=1;i++;}
  }while(valid==1);
incmax=i;finmax=i;smax=a[i];
i++;j=1;
do{
   i=j;
   do{ valid=0;
       if(a[i]<0){valid=1;i++;}
      }while(valid==1);
   inc=i;fin=i;s=a[i];
   i++;
   do{
      s+=a[i];
      if(s>0)fin++;
      if(s>smax){smax=s;incmax=inc;finmax=fin;}
      if(s<=0){inc=i+1;fin=i;s=0;}
      i++;
     }while((i<=k)&&((fin-inc)+1<n));
   j++;
   }while(j<=n);

fprintf(g,"%ld %ld %ld",smax,incmax,((finmax-incmax)+1));


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