Pagini recente » Cod sursa (job #2293194) | Cod sursa (job #3215338) | Cod sursa (job #1842460) | Cod sursa (job #1404156) | Cod sursa (job #802438)
Cod sursa(job #802438)
#include<stdio.h>
FILE *fin=fopen("buline.in", "r");
FILE *fout=fopen("buline.out", "w");
int n,i,j,x,y,ss,si,s,smax,smin,nr,p,u,pmax,umax,pi,ui,umin,pmin ;
int v[200100];
int main () {
fscanf(fin, "%d", &n);
for (i=1;i<=n;i++){
fscanf(fin, "%d%d", &x, &y);
if( y==0 ){
v[i]=-x;
}
if( y==1 ){
v[i]=x;
}
}
smin=999999999;
smax=-999999999;
for(i=1;i<=n;i++)
ss=ss+v[i];
s=v[1];
si=v[1];
p=u=1;
pi=ui=1;
for (i=2;i<=n;i++){
if(v[i]>v[i]+s){
s=v[i];
p=u=i;
}
else {
s=v[i]+s;
++u;
}
if (s>smax){
smax=s;
pmax=p;
umax=u;
}
if(v[i]<v[i]+si){
si=v[i];
pi=ui=i;
}
else{
si=v[i]+si;
++ui;
}
if (si<smin){
smin=si;
pmin=pi;
umin=ui;
}
}
if (smax>ss-smin){
nr=smax;
fprintf(fout,"%d %d %d", nr, pmax, umax-pmax+1);
}
else{
nr=ss-smin;
fprintf(fout, "%d %d %d", nr, umin+1, n-umin+pmin-1);
}
return 0;
}