Pagini recente » Cod sursa (job #1022504) | Cod sursa (job #2929109) | Cod sursa (job #141111) | Cod sursa (job #1211323) | Cod sursa (job #2645715)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,suma,smax=-1000010,stmax,drmax,stmin,drmin,contor,v[200010],min1,smin=10010,S,pozmin,pozmax;
void citire()
{
f>>n;
int x,c;
for(int i=1;i<=n;i++)
{
f>>x>>c;
if(c==0)
v[i]=-x;
else
v[i]=x;
S=S+v[i];
}
}
void smin1()
{
suma=v[1];
smin=v[1];
stmin=1;
for(int i=2;i<=n;i++)
{
if(suma>0)
{
stmin=i;
suma=0;
}
suma=suma+v[i];
if(suma<smin)
{
pozmin=stmin;
smin=suma;
drmin=i;
}
}
}
void ssmax()
{
suma=v[1];
smax=v[1];
stmax=1;
for(int i=2;i<=n;i++)
{
if(suma<0)
{
stmax=i;
suma=0;
}
suma=suma+v[i];
if(suma>smax)
{
pozmax=stmax;
smax=suma;
drmax=i;
}
}
}
void Afisare()
{
S = S - smin;
if (smax > S)
{
g<<smax<< " " << pozmax << " " << pozmax - stmax+1;
}
else if (smax == S)
{
if (stmax < drmin + 1)
g <<smax <<" "<< stmax << " " << (drmax-stmax+1) << "\n";
else
g << smax<<" "<<(drmin + 1) << " " << (n - (drmin-stmin+1)) << "\n";
}
else if (smax < S)
{
g <<S<<" "<< drmin+1 << " " << n-(drmin-pozmin+1) << "\n";
}
}
int main()
{
citire();
if(n!=1)
{
ssmax();
g<<"\n";
smin1();
Afisare();
}
else
{
g<<v[1]<<" "<<"1"<<" "<<"1";
}
return 0;
}