Cod sursa(job #992494)
| Utilizator | Data | 1 septembrie 2013 23:16:50 | |
|---|---|---|---|
| Problema | Buline | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.14 kb |
#include<cstdio>
#include<climits>
int n,v[200001],s,in,d,smax=INT_MIN,imax,dmax,i,j,a,c;
FILE *f,*g;
int main(){
f=fopen("buline.in","r");
g=fopen("buline.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d%d",&a,&c);
if(c==1)
v[i]=a;
else
v[i]=-a;
}
i=1;
imax=0;
dmax=0;
s=0;
in=1;
d=1;
while(i<=n){
if(s+v[i]>=v[i]){
d++;
s+=v[i];
if(s>smax){
smax=s;
dmax=d;
imax=in;
}
}
else{
s=v[i];
in=i;
d=1;
}
i++;
}
i=1;
while(i<=n && i<=in){
if(s+v[i]>=v[i]){
d++;
s+=v[i];
if(s>smax){
smax=s;
dmax=d;
imax=in;
}
}
else{
s=v[i];
in=i;
d=1;
break;
}
i++;
}
fprintf(g,"%d %d %d",smax,imax,dmax);
fclose(f);
fclose(g);
return 0;
}
