Pagini recente » Cod sursa (job #1730545) | Cod sursa (job #1857455) | Cod sursa (job #712219) | Profil IoanaLivia | Cod sursa (job #2757156)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
const int nmax=200000;
int v[nmax+5],s[nmax+5];
int main()
{
int i,n,stot=0;
bool semn;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i]>>semn;
if(semn==0)
v[i]=-v[i];
stot+=v[i];
}
int sc,scmin,scmax,ic,stmin,drmin,stmax,drmax;
sc=scmax=v[1];
ic=stmax=drmax=1;
for(i=2;i<=n;i++)
{
if(sc+v[i]<v[i])
{
sc=v[i];
ic=i;
}
else
sc=sc+v[i];
if(sc>scmax)
{
scmax=sc;
stmax=ic; drmax=i;
}
}
ic=stmin=drmin=1;
sc=scmin=v[1];
for(i=2;i<=n;i++)
{
if(sc+v[i]>v[i])
{
sc=v[i];
ic=i;
}
else
sc=sc+v[i];
if(sc<scmin)
{
scmin=sc;
stmin=ic; drmin=i;
}
}
int scirc=stot-scmin;
if(scirc>scmax)
fout<<scirc<<" "<<drmin+1<<" "<<n-(drmin-stmin+1)<<"\n";
else
fout<<scmax<<" "<<stmax<<" "<<drmax-stmax+1<<"\n";
fin.close();
fout.close();
return 0;
}