Pagini recente » Cod sursa (job #2905917) | Cod sursa (job #756437) | Cod sursa (job #395189) | Cod sursa (job #2059772) | Cod sursa (job #2123269)
#include <stdio.h>
#include <climits>
using namespace std;
FILE *f,*g;
int v[400004];
int main()
{
int n,x,i;
f=fopen("buline.in","r");
g=fopen("buline.out","w");
fscanf(f,"%d",&n);
int j;
for(j=1;j<=n;j++)
{
fscanf(f,"%d %d",&v[j],&x);
if(x==0)
v[j]=v[j]*(-1);
}
int so=INT_MIN,si=0,li=1,pi=1,pf;
for(i=1;i<=n;i++)
{
if(si<0)
{
si=v[i],li=i;
}
else
si+=v[i];
if(si>so)
{
so=si;
pi=li;
pf=i;
}
}
int so1=INT_MIN,si1=0,li1=1,pi1=1,pf1=1,ssm=0,lg;
for(i=1;i<=n;i++)
{
ssm+=v[i];
v[i]*=(-1);
if(si1<0)
{
si1=v[i],li1=i;
}
else
si1+=v[i];
if(si1>so1)
{
so1=si1;
pi1=li1;
pf1=i;
}
}
if(ssm-so1*(-1)>so)
{
so=ssm-so1*(-1);
pi=pi1+1;
pf=pf1-1;
}
if(pi>pf)
{
lg=n-pi+pf+1;
}
else
lg=pf-pi+1;
fprintf(g,"%d %d %d",so,pi,lg);
fclose(f);
fclose(g);
return 0;
}