Pagini recente » Cod sursa (job #2054156) | Cod sursa (job #1184335) | Cod sursa (job #141119) | Cod sursa (job #1890448) | Cod sursa (job #2645718)
#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 (pozmax<drmin+1)
g<<smax<<" "<< pozmax << " " << pozmax - stmax+1;
else
g<<smax<<" "<<drmin+1 << " " << n-(drmin-pozmin+1) << "\n";
}
else if (smax < S)
{
g <<S<<" "<< drmin+1 << " " << n-(drmin-pozmin+1) << "\n";
}
}
int main()
{
citire();
ssmax();
g<<"\n";
smin1();
Afisare();
return 0;
}