Pagini recente » Cod sursa (job #387132) | Cod sursa (job #1771909) | Cod sursa (job #843643) | Cod sursa (job #375977) | Cod sursa (job #3165763)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int n,i,j,v[200009],st,sMax=INT_MIN,sMin=INT_MAX,s,sum,stMin,drMin,stMax,drMax;
bool t;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i]>>t;
if(!t)
v[i]*=(-1);
sum+=v[i];
}
s=v[1];
stMax=drMax=st=1;
for(i=2;i<=n;i++)
{
if(s+v[i]>=v[i])
s+=v[i];
else
s=v[i],st=i;
if(s>sMax)
{
sMax=s;
stMax=st;
drMax=i;
}
}
//cout<<sMax<<" "<<stMax<<" "<<drMax<<'\n';
s=v[1];
stMin=stMin=st=1;
for(i=2;i<=n;i++)
{
if(s+v[i]<=v[i])
s+=v[i];
else
s=v[i],st=i;
if(s<sMin)
{
sMin=s;
stMin=st;
drMin=i;
}
}
//cout<<sMin<<" "<<stMin<<" "<<drMin;
if(sMax>sum-sMin)
cout<<sMax<<" "<<stMax<<" "<<drMax-stMax+1;
else
cout<<sum-sMin<<" "<<drMin+1<<" "<<stMin-1+n-drMin;
return 0;
}