Pagini recente » Cod sursa (job #491887) | Cod sursa (job #534310) | Cod sursa (job #1076453) | Cod sursa (job #984347) | Cod sursa (job #2132997)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int v[500004];
int main()
{
int n,i,nr,xx,li=1,lf=1,so=999999999,si=0,lg=0,tot=0,poz=1,neg=0;
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),neg=1;
v[n+i]=v[i];
tot+=v[i];
}
if(neg==1)
{
for(i=1;i<=2*n;i++)
{
if(si>0)
{
si=v[i];
poz=i;
}
else
si+=v[i];
if(si<so)
{
so=si;
li=poz;
lf=i;
}
}
so=tot-so;
lg=lf-li+1;
lg=n-lg;
li=lf+1;
fprintf(g,"%d %d %d",so,li,lg);
}
else
{
so=-999999999;
for(i=1;i<=2*n;i++)
{
if(si<0)
{
si=v[i];
poz=i;
}
else
si+=v[i];
if(si>so&&i-li+1<=n)
{
so=si;
li=poz;
lf=i;
}
}
lg=lf-li+1;
fprintf(g,"%d %d %d",so,li,lf);
}
fclose(f);
fclose(g);
return 0;
}