Pagini recente » Autentificare | Cod sursa (job #2016957) | Cod sursa (job #1130192) | Cod sursa (job #760014) | Cod sursa (job #214096)
Cod sursa(job #214096)
#include<stdio.h>
long n,i,a[2000100],c,S,SM,is,ss,s,im,sm,sum,a1,ln,pm;
long min=2000000000,x,sum1,a11,ln1;
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
scanf("%ld",&n);
SM=-2000000000;
S=0;
is=1;
ss=0;
im=0;
sm=0;
for(i=1;i<=n;++i)
{scanf("%ld%ld",&a[i],&c);
if(!c)a[i]*=-1;
s+=a[i];
if(S+a[i]>a[i]){ss=i;S+=a[i];}
else{is=i;ss=i;S=a[i];}
if(S>SM){SM=S;im=is;sm=ss;}
a[i]*=-1;
if(a[i]>0&&a[i]<min){min=a[i];pm=i;}
}
sum1=SM;
a11=im;
ln1=sm-im+1;
SM=-2000000000;
S=0;
is=1;
ss=0;
im=0;
sm=0;
for(i=1;i<=n;++i)
{if(S+a[i]>a[i]){ss=i;S+=a[i];}
else{is=i;ss=i;S=a[i];}
if(S>SM){SM=S;im=is;sm=ss;}}
sum=s+SM;
a1=sm+1;
if(a1==n+1)a1=1;
ln=n-(sm-im+1);
if(sum1>sum){sum=sum1;a1=a11;ln=ln1;}
if(ln==0)printf("%ld %ld 1\n",0-min,pm);
else{x=a1+ln;if(x>n)x-=n;if(a[x]<0){++ln;sum-=a[x];}printf("%ld %ld %ld\n",sum,a1,ln);}
return 0;
}