Pagini recente » Cod sursa (job #1312526) | Cod sursa (job #1953006) | Cod sursa (job #2601307) | Cod sursa (job #656323) | Cod sursa (job #25406)
Cod sursa(job #25406)
#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;
}