Cod sursa(job #1812197)
| Utilizator | Data | 21 noiembrie 2016 21:37:57 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <cstdio>
const int INFINIT = 2000000000;
int main() {
int max, p1, p2, n, x, s, p;
FILE *fin = fopen("ssm.in", "r");
fscanf(fin, "%d", &n);
max = -INFINIT;
s = 0;
p = 0;
p1 = p2 = -1;
for(int i = 0; i < n; ++i) {
fscanf(fin, "%d", &x);
s = s + x;
if(x > s) {
p = s;
s = x;
}
if(s > max) {
max = s;
p1 = p;
p2 = i;
}
}
fclose(fin);
FILE *fout = fopen("ssm.out", "w");
fprintf(fout, "%d %d %d", max, p1 + 1, p2 + 1);
fclose(fout);
return 0;
}
