Pagini recente » Cod sursa (job #1469855) | Cod sursa (job #2920228) | Cod sursa (job #922025) | Cod sursa (job #1516469) | Cod sursa (job #128582)
Cod sursa(job #128582)
#include<stdio.h>
int s,max,p,min,k,n,i,c,v[200001],y[200001];
int main(){
FILE *f=fopen("buline.in","r");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d %d",&v[i],&c);
if(c==0)v[i]=-v[i];
}
fclose(f);
min=v[1];k=1;
for(i=2;i<=n;i++){
if(v[i]<min){
min=v[i];
k=i;
}
}
y[k]=0;
max=y[k+1];p=k+1;
for(i=k+1;i<=n;i++){
if(v[i]+y[i-1]>v[i]){
y[i]=v[i]+y[i-1];
}
else y[i]=v[i];
if(y[i]>max){p=i;max=y[i];}
}
y[0]=y[n];
for(i=1;i<=k;i++){
if(v[i]+y[i-1]>v[i]){
y[i]=v[i]+y[i-1];
}
else y[i]=v[i];
if(y[i]>max){p=i;max=y[i];}
}
i=p;
k=0;
while(s!=max){
k++;s+=v[i];
i--;if(i==0){i=n;}
}
FILE *g=fopen("buline.out","w");
fprintf(g,"%d %d %d",max,i+1,k);
fclose(g);
return 0;
}