Pagini recente » Borderou de evaluare (job #351567) | Cod sursa (job #905256) | Cod sursa (job #3141999) | Cod sursa (job #1051810) | Cod sursa (job #3217925)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("buline.in");
ofstream out("buline.out");
int v[200001],n,x,y,poz1,l1,imax, poz2, l2, imin, smax,smin;
int main()
{
in>>n;
for(int i=1; i<=n; i++)
{
in>>x>>y;
if(y==0)
v[i]=-x;
else
v[i]=x;
}
long long s=0,Max=-100000, Min=100000;
for(int i=1; i<=n; i++)
{
s+=v[i];
if(smax<0)
{
smax=v[i];
poz1=i;
}
else smax+=v[i];
if(smax>Max)
Max=smax, imax=i, l1=i-poz1+1;
if(smin>0)
smin=v[i], poz2=i;
else smin+=v[i];
if(smin<Min)
Min=smin, imin=i+1, l2=n-i+poz2-1;
}
if(Max>s-Min)
out<<Max<<" "<<imax<<" "<<l1;
else
out<<s-Min<<" "<<imin<<" "<<l2;
}