Pagini recente » Cod sursa (job #623581) | Cod sursa (job #3228272) | Cod sursa (job #1319462) | Cod sursa (job #345794) | Cod sursa (job #3165108)
#include <fstream>
using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
int smax[200001],smin[200001],stmax[200001],stmin[200001];
int s,nr,ok,x,mins,maxs,n,i,lg,minst,mindr,maxst,maxdr;
int main ()
{
fin>>n;
smin[0]=2000000001;
smax[0]=-2000000001;
for (i=1; i<=n; i++)
{
fin>>x>>ok;
if (ok==0)
x=-x;
s+=x;
if (smax[i-1]+x<x)
{
smax[i]=x;
stmax[i]=i;
}
else
{
smax[i]=smax[i-1]+x;
stmax[i]=stmax[i-1];
}
if (smin[i-1]+x>x)
{
smin[i]=x;
stmin[i]=i;
}
else
{
smin[i]=smin[i-1]+x;
stmin[i]=stmin[i-1];
}
}
for (i=1; i<=n; i++)
{
if (smax[i]>maxs)
{
maxs=smax[i];
maxst=stmax[i];
maxdr=i;
}
if (smin[i]<mins)
{
mins=smin[i];
minst=stmin[i];
mindr=i;
}
}
if (maxs>s-mins||nr==n)
fout<<maxs<<" "<<maxst<<" "<<maxdr-maxst+1;
else
{
lg=mindr-minst+1;
mindr++;
if (mindr>n)
mindr=1;
fout<<s-mins<<" "<<mindr<<" "<<n-lg;
}
return 0;
}