Pagini recente » Cod sursa (job #2470630) | Cod sursa (job #1916567) | Cod sursa (job #1504751) | Cod sursa (job #583517) | Cod sursa (job #2733253)
#include <fstream>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[200001];
int main()
{
int n,S=0;
cin>>n;
for(int i=1; i<=n; i++)
{
int semn;
cin>>v[i]>>semn;
if(semn==0)
v[i]=-v[i];
S+=v[i];
}
int sc1,sc2,smax,st1,st2,stmax,drmax,stmin,drmin,smin;
sc1=sc2=smax=smin=v[1];
st1=st2=stmax=drmax=stmin=drmin=1;
for(int i=2; i<=n; i++)
{
if(sc1+v[i]<v[i])
{
sc1=v[i];
st1=i;
}
else sc1+=v[i];
if(sc1>smax)
{
smax=sc1;
stmax=st1;
drmax=i;
}
///
if(sc2+v[i]>v[i])
{
sc2=v[i];
st2=i;
}
else sc2+=v[i];
if(sc2<smin)
{
smin=sc2;
stmin=st2;
drmin=i;
}
}
if(S-smin<smax)
cout<<smax<<" "<<stmax<<" "<<drmax-stmax+1;
else if(drmin!=n)
cout<<S-smin<<" "<<drmin+1<<" "<<n-(drmin-stmin+1);
else cout<<S-smin<<" "<<1<<" "<<n-(drmin-stmin+1);
return 0;
}