Pagini recente » Cod sursa (job #918160) | Cod sursa (job #2347896) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #1412214)
#include <cstdio>
using namespace std;
int v[200000];
int main(){
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
int n,i,sc,smax,st,stm,drm,a,stot,smin,drmm,stmm,smax2;
scanf("%d",&n);
stot=0;
for (i=0;i<n;i++){
scanf("%d%d",&v[i],&a);
if (a==0)
v[i]*=-1;
stot+=v[i];
}
sc=smax=v[0];
st=stm=drm=0;
for (i=1;i<n;i++){
if (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+=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;
}