Cod sursa(job #1124981)
| Utilizator | Data | 26 februarie 2014 14:57:02 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <cstdio>
FILE *f=fopen("ssm.in", "r");
FILE *g=fopen("ssm.out", "w");
int s, nr, l1=1, l2=1, v[6000001], smax, l1m, l2m;
int main()
{
int n;
fscanf(f, "%d", &n);
for(int i=1; i<=n; ++i)
fscanf(f, "%d", &v[i]);
for(int i=1; i<=n; ++i){
s+=v[i];
if(s<0){
s-=v[i]; --l2;
l1=i+1; l2=i;
s=0;
}
else{
s+=nr;
++l2;
}
if(s>smax){
smax=s;
l1m=l1;
l2m=l2;
}
}
fprintf(g, "%d %d %d", smax, l1m, l2m);
return 0;
}
