Cod sursa(job #25406)

Utilizator petrecgClinciu Glisca Petre petrecg Data 4 martie 2007 12:28:44
Problema Buline Scor 20
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 9-a si gimnaziu Marime 1 kb
#include <stdio.h>
long nr,nr2,i,j,n,k,s,s1,s2,smax,p,q,pf,qf,k2,pk;
FILE *f;
int main()
{f=fopen("buline.in","r");fscanf(f,"%ld",&n);pf=1;qf=1;
 fscanf(f,"%ld%ld",&nr,&k);if(!k)k=-1;s=s+k*nr;
 s1=s;smax=s;p=1;nr2=nr;k2=k;pk=1;
 for(i=2;i<=n;i++)
  {fscanf(f,"%ld%ld",&nr,&k);if(!k)k=-1;s=s+k*nr;
   q=i;s1=s1-k2*nr2+k*nr;k2=k;nr2=nr;
   if(k==1){if(!s2)pk=i;s2+=nr;}else{if(s2>smax&&s2){smax=s2;pf=pk;qf=i-1;}s2=0;}
   if(s1>s){p=i;s=s1;q=i;}
   if(s>smax){smax=s;pf=p;qf=q;}}
 fclose(f);
 f=fopen("buline.in","r");fscanf(f,"%ld",&n);
 for(i=1;i<=n&&i<pf;i++)
  {fscanf(f,"%ld%ld",&nr,&k);if(!k)k=-1;s=s+k*nr;
   q=i;s1=s1-k2*nr2+k*nr;k2=k;nr2=nr;
   if(k==1){if(!s2)pk=i;s2+=nr;}else{if(s2>smax&&s2){smax=s2;p=pk;q=i-1;}s2=0;}
   if(s1>s){p=i;s=s1;}
   if(s>smax){smax=s;pf=p;qf=q;}}
 fclose(f);
 if(s2>smax&&s2){smax=s2;pf=pk;qf=i-2;s2=0;}if(s>smax){smax=s;pf=p;qf=q;}
 if(qf>=pf)qf=qf-pf+1;else qf=n-(pf-qf-1);
 f=fopen("buline.out","w");fprintf(f,"%ld %ld %ld",smax,pf,qf);fclose(f);
 return 0;
}