Pagini recente » oni_cl_11-12 | Cod sursa (job #1510098) | Cod sursa (job #1238514) | Cod sursa (job #624540) | Cod sursa (job #2136345)
#include <iostream>
#include <stdio.h>
using namespace std;
FILE *f,*g;
int n,m,sum;
int v[400002];
void citire()
{ int i,x,y;
fscanf(f,"%d",&n);
m=n;
for(i=1;i<=n;i++)
{
fscanf(f,"%d %d",&x,&y);
if(y==0)
x*=-1;
v[i]=x;
sum+=x;
}
}
int ssm(int &li, int &lf)
{
int sum_int=0, suma_optima=-9999999, i,poz_int;
for(i=1;i<=n;i++)
{
if(sum_int<0)
{
sum_int=v[i];
poz_int=i;
}
else
sum_int+=v[i];
if(sum_int>suma_optima)
{
suma_optima=sum_int;
li=poz_int;
lf=i;
}
}
return suma_optima;
}
void schimbare_semn()
{
for(int i=0;i<=n;i++)
v[i]*=-1;
}
int main()
{
int li=0,lf=0,suma1,suma2,li1,lf1;
f=fopen("buline.in","r");
g=fopen("buline.out","w");
citire();
suma1=ssm(li,lf);
li1=li;
lf1=lf;
li=lf=0;
schimbare_semn();
suma2=ssm(li,lf);
sum+=suma2;
if(suma1<sum)
{
suma1=sum;
li1=lf+1;
lf1=li-1;
}
if(li1<lf1)
lf1=lf1-li1+1;
else
lf1=n-li1+lf1+1;
fprintf(g,"%d %d %d",suma1,li1,lf1);
fclose(f);
fclose(g);
return 0;
}