Pagini recente » Cod sursa (job #3280752) | Cod sursa (job #2736046) | Cod sursa (job #1465668) | Cod sursa (job #492632) | Cod sursa (job #2133119)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int v[200002];
int main()
{
f=fopen("buline.in","r");
g=fopen("buline.out","w");
int i,sum=-1,smax1=-2000000000,smax2=-2000000000,smax,ii1,jj1,aux,n,x,semn,ii2,jj2,ii,jj;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d %d",&v[i],&semn);
if(semn==0)
v[i]*=-1;
v[i+n]=v[i];
}
for(i=1;i<=n*2;i++)
{
if(sum<0)
{
if(i>n)
break;
sum=v[i];
aux=i;
}
else
sum+=v[i];
if(sum>smax1 && i-aux+1<=n)
{
smax1=sum;
ii1=aux;
jj1=i-aux+1;
}
}
for(i=1;i<=n*2;i++)
{
if(sum<0)
{
if(i>n)
break;
sum=v[i];
aux=i;
}
else
sum+=v[i];
if(sum<smax2 && i-aux+1<=n)
{
smax2=sum;
ii2=aux;
jj2=i-aux+1;
}
}
if(smax1>smax2)
{
smax=smax1;
ii=ii1;
jj=jj1;
}
else
{
smax=smax1;
ii=ii2;
jj=jj2;
}
fprintf(g,"%d %d %d",smax,ii,jj);
return 0;
}