Pagini recente » Istoria paginii runda/pogo.danseaza/clasament | Rating Necsulea Stefan (vnbnghpdifjngfoj) | Cod sursa (job #759267) | Cod sursa (job #806603) | Cod sursa (job #222412)
Cod sursa(job #222412)
#include<stdio.h>
#include<stdlib.h>
#define maxn 400100
long long nr[maxn];
int main(){
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
long long n,i,aux,pmin=0,pmax=0,p,u,max,s,suma=0;
scanf("%lld",&n);
for(i=0;i<n;++i){
scanf("%lld%lld",&nr[i],&aux);
if(aux==1)
nr[i]=nr[i]*(-1);
suma+=nr[i];
}
for(i=n;i<2*n-1;++i)
nr[i]=nr[i-n];
s=0;
p=u=0;
max=-1000000;
for(i=0;i<2*n-2;++i){
s+=nr[i];
++u;
if(u-p==n+1){
if(nr[i]>nr[i-n]){
++p;
s-=nr[i-n];
}
}
if(max<s){
max=s;
pmin=p;
pmax=u;
}
if(s<0 || (u-p>n)){
s=0;
p=i+1;
u=i+1;
}
}
long long l;
l=n-pmax+pmin;
pmin=pmax%n;
printf("%lld %lld %lld\n",abs(suma-max),pmin+1,l);
fclose(stdin);
fclose(stdout);
return 0;
}