Pagini recente » Cod sursa (job #428522) | Cod sursa (job #2637984) | Cod sursa (job #179678) | Cod sursa (job #1215520) | Cod sursa (job #2330265)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
struct jjj{
int cul,nr;
};
jjj v[200005];
int main()
{
int smax2=0;
int stot=0;
int n,i;
fin>>n;
int x;
for(i=1;i<=n;i++)
{
fin>>v[i].cul>>v[i].nr;
if(v[i].cul==0)
{
v[i].nr=v[i].nr*(-1);
stot=stot+v[i].nr;
}
}
int sc,smax;
sc=smax=v[1].nr;
int st,dr,ic;
st=dr=ic=1;
for(i=2;i<=n;i++)
{
if(sc+v[i].nr<v[i].nr)
{
ic=i;
sc=v[i].nr;
}
else
{
sc=sc+v[i].nr;
}
if(sc>smax)
{
smax=sc;
st=ic;
dr=i;
}
}
int smax1;
sc=smax1=v[1].nr;
int st1=st;
int dr1=dr;
st=dr=ic=1;
for(i=2;i<=n;i++)
{
/*if(v[i].cul==0)
v[i].nr=v[i].nr*(-1);*/
if(sc+v[i].nr<v[i].nr)
{
ic=i;
sc=v[i].nr;
}
else
{
sc=sc+v[i].nr;
}
if(sc<smax1)
{
smax1=sc;
st=ic;
dr=i;
}
}
smax2=stot-smax1;
if(smax<smax2)
{
fout<<smax2<<" "<<dr+1<<" "<<st-dr+1;
}
else
fout<<smax<<" "<<st<<" "<<dr-st+1;
return 0;
}