Pagini recente » Cod sursa (job #2470757) | Cod sursa (job #3220189) | Cod sursa (job #3003463) | Cod sursa (job #365214) | Cod sursa (job #425844)
Cod sursa(job #425844)
#include<stdio.h>
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
int v[200001],p,u,umin,umax,pmin,pmax,p2,u2,smin,smax,sant,sminant,a,b,i,nr,stotal,out,pout,lout,uout;
int main (){
fscanf(f,"%d",&nr);
for(i=1;i<=nr;i++){
fscanf(f,"%d %d",&a,&b);
if(b==0)
v[i]=-a;
else
v[i]=a;
}
sant=-99999999;
sminant=99999999;
smax=-99999999;
smin=99999999;
for(i=1;i<=nr;i++){
/*if(v[i]>v[i]+sant)
sant=v[i],p=u=i;
else
sant=v[i]+sant,u++;
if(sant>smax){
smax=sant;
pmax=p;
umax=u;
}
*/
if(v[i]<sminant+v[i])
sminant=v[i],p2=u2=i;
else
sminant=v[i]+sminant,u2++;
if(sminant<smin){
smin=sminant;
pmin=p2;
umin=u2;
}
stotal+=v[i];
}
if(stotal-smin>smax){
out=stotal-smin;
pout=umin+1;
uout=pmin;
lout=nr-(umin+1)+pmin;
}
else{
out=smax;
pout=pmax;
lout=umax-pmax;
}
fprintf(g,"%d %d %d",out,pout,lout);
fclose(f);
fclose(g);
return 0;
}