Pagini recente » Cod sursa (job #2400768) | Cod sursa (job #127825) | Cod sursa (job #2553463) | Cod sursa (job #2961314) | Cod sursa (job #270989)
Cod sursa(job #270989)
#include<stdio.h>
int poz,lung1,lung2=0,i,v[20010],n,semn,pozm1,pozm2,lungm1,lungm2=0;
long s=2000000000,smax=2000000000,S,sm=-2000000000,smaxm=-2000000000;
int main()
{
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%d %d",&v[i],&semn);
if (semn==0) v[i]=v[i]*(-1);
if (s+v[i]<=v[i])
{
lung2++;
s=s+v[i];
}
else {
lung2=1;
s=v[i];
}
if (smax<=s) ;
else
{
poz=i;
lung1=lung2;
smax=s;
}
S+=v[i];
}
poz+=1;
if (poz>n)
poz=poz-n;
s=S-smax;
lung1=n-lung1;
for (i=1;i<=n;i++)
{
if (sm+v[i]>=v[i])
{lungm2++;
sm=sm+v[i];
}
else {pozm2=i;
lungm2=1;
sm=v[i];
}
if (smaxm>sm) ;
else if (smaxm==sm)
{if (pozm1>pozm2)
{pozm1=pozm2;
lungm1=lungm2;}
if (pozm1==pozm2)
if (lungm2<lungm1)
lungm1=lungm2;
}
else
{pozm1=pozm2;
lungm1=lungm2;
smaxm=sm;
}
}
sm=smaxm;
if (s>sm)
fprintf(g,"%ld %d %d",s,poz,lung1);
else fprintf(g,"%ld %d %d",sm,pozm1,lungm1);
fclose(f);
fclose(g);
return 0;
}