Pagini recente » Monitorul de evaluare | Cod sursa (job #1576472) | Monitorul de evaluare | Cod sursa (job #2280091) | Cod sursa (job #3334498)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
long long n,s,x[200001],y[200001],f1=0,l1=0,fm=0,lm=0,sm=0;
int main()
{
ifstream in("buline.in ");
ofstream out("buline.out");
in>>n;
in>>x[1]>>y[1];
if(y[1]==0){
s-=x[1];
f1=1;
l1=1;
fm=1;
lm=1;
sm-=x[1];
}
else{
s+=x[1],f1=1,l1=1,fm=1,lm=1,sm+=x[1];
}
for(int i=2;i<=n;i++)
{
in>>x[i]>>y[i];
int u=0;
if(y[i]==1)u+=x[i];
else u-=x[i];
if(s+u > u)
{
s+=u;
l1=i;
}
else{
s=u;
f1=l1=i;
}
if(s>sm)
{
sm=s;
fm=f1;
lm=l1;
}
}
//cout<<sm<<" "<<fm<<" "<<lm;
s=sm;
l1=lm;
for(int i=1;i<fm;i++)
{
int u=0;
if(y[i]==1)u+=x[i];
else u-=x[i];
if(s+u > u)
{
s+=u;
l1++;
}
if(s>sm)
{
sm=s;
lm=l1;
}
}
out<<sm<<" "<<fm<<" "<<lm-fm+1;
return 0;
}