Pagini recente » Cod sursa (job #1486886) | Cod sursa (job #3194022) | Cod sursa (job #822248) | Cod sursa (job #1078829) | Cod sursa (job #1412213)
#include <cstdio>
using namespace std;
int v[200001];
int main()
{ freopen("buline.in", "r",stdin);
freopen("buline.out", "w",stdout);
int n,i,tip,sc,smax,st,stm,drm,stmm,drmm,smin,smax2,stot=0;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d%d", &v[i], &tip);
if(tip==0)
v[i]=v[i]*-1;
stot=stot+v[i];
}
sc=smax=v[0];
st=stm=drm=0;
for(i=1; i<n; i++){
if(sc+v[i]>v[i])
sc=sc+v[i];
else{
sc=v[i];
st=i;
}
if(sc>smax){
stm=st;
drm=i;
smax=sc;
}
}
drmm=drm;
stmm=stm;
smin=stot;
sc=v[0];
st=stm=drm=0;
for(i=1; i<n; i++){
if(sc+v[i]<v[i])
sc=sc+v[i];
else{
sc=v[i];
st=i;
}
if(sc<smin){
stm=st;
drm=i;
smin=sc;
}
}
smax2=stot-smin;
if(smax>smax2)
printf("%d %d %d", smax, stmm, drmm-stmm+1);
else{
if(stm-1==-1)
stm=n-1;
printf("%d %d %d", smax2, (drm+1)%n+1, n-(drm-stm+1));
}
return 0;
}