Pagini recente » Cod sursa (job #2548860) | Statistici Pirates of the C Plus Berrian (UCV_Popescu_Mladin_Gheorghe) | Cod sursa (job #2985949) | Cod sursa (job #2648196) | Cod sursa (job #2133134)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int v[400002];
int main()
{
f=fopen("buline.in","r");
g=fopen("buline.out","w");
int i,sum=-1,smax=-2000000000,smax2=2000000000,ii,jj,aux,n,x,semn,ii2,jj2,sumtot=0;
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];
sumtot+=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>smax && i-aux+1<=n)
{
smax=sum;
ii=aux;
jj=i-aux+1;
}
}
sum=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;
}
}
smax2=sumtot-smax2;
if(smax2>smax && jj2!=0)
{
smax=smax2;
ii=ii2;
jj=jj2;
}
fprintf(g,"%d %d %d",smax,ii,jj);
return 0;
}