Pagini recente » Cod sursa (job #43781) | Cod sursa (job #477606) | Cod sursa (job #497157) | Cod sursa (job #747104) | Cod sursa (job #1412241)
#include <cstdio>
using namespace std;
int v[200005];
bool c[200005];
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
int n,i,stot=0,smin,sc,smax,st,drm,stm,dr,l,smax1,stmin,drmin;
scanf("%d",&n);
for(i=0; i<n; i++){
scanf("%d",&v[i]);
scanf("%d",&c[i]);
if(c[i]==0)
v[i]*=(-1);
stot+=v[i];
}
sc=smax1=v[0];
st=stm=drm=0;
for(i=1; i<n; i++)
{
if(sc+v[i]>v[i])
sc+=v[i];
else
{
sc=v[i];
st=i;
}
if(sc>smax1)
{
stm=st;
drm=i;
smax1=sc;
}
}
sc=smin=v[0];
st=stmin=drmin=0;
for(i=1; i<n; i++)
{
if(sc+v[i]<v[i])
sc+=v[i];
else
{
sc=v[i];
st=i;
}
if(sc<smin)
{
stmin=st;
drmin=i;
smin=sc;
}
}
smax=stot-smin;
dr=(stmin-1)%n;
st=(drmin+1)%n;
l=n-(drmin-stmin+1);
if(smax1>smax)
printf("%d %d %d",smax1,stm+1,drm-stm+1);
else
printf("%d %d %d",smax,st+1,l);
return 0;
}