Pagini recente » Cod sursa (job #864421) | Cod sursa (job #961038) | Cod sursa (job #2100838) | Cod sursa (job #405136) | Cod sursa (job #2133008)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int v[200004];
int main()
{
int n,i,nr,xx,li1=1,lf1=1,so1=-999999999,si1=0,lg1=0,tot=0,poz,li2=1,lf2=1,so2=999999999,si2=0,lg2=0,lg;
f=fopen("buline.in","r");
g=fopen("buline.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d %d",&v[i],&xx);
if(xx==0)
v[i]=v[i]*(-1);
v[n+i]=v[i];
tot+=v[i];
}
poz=1;
for(i=1;i<=2*n;i++)
{
if(si1<0)
{
if(i>n)
break;
si1=v[i],poz=i;
}
else
si1+=v[i];
if(si1>so1&&i-li1+1<=n)
{
so1=si1;
li1=poz;
lf1=i;
}
}
lg1=lf1-li1+1;
poz=1;
for(i=1;i<=2*n;i++)
{
if(si2>0)
{
if(i>n)
break;
si2=v[i],poz=i;
}
else
si2+=v[i];
if(si2<so2&&i-li2+1<=n)
{
so2=si2;
li2=poz;
lf2=i;
}
}
lg2=lf2-li2+1;
lg=n-lg2;
if(tot-so2>so1&&lg!=0)
{
so1=tot-so2;
li1=lf2+1;
lg1=lg;
}
fprintf(g,"%d %d %d",so1,li1,lg1);
fclose(f);
fclose(g);
return 0;
}