Cod sursa(job #313230)
Utilizator | Vlad Popa vlad_popa | Data | 8 mai 2009 13:33:14 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <cstdio>
int N, V[6000005];
int main () {
freopen ("ssm.in", "r", stdin);
freopen ("ssm.out", "w", stdout);
int i, S, sol, sst, sdr, st, dr;
scanf ("%d", &N);
for (i = 1; i <= N; ++ i)
scanf (" %d", V + i);
for (i = 2, S = sol = V[1], sst = sdr = st = dr = 1; i <= N; ++ i) {
if (S + V[i] < V[i]) S = V[i], st = dr = i;
else S += V[i], ++ dr;
if (S > sol) {
sst = st, sdr = dr, sol = S;
}
}
printf ("%d %d %d\n", sol, sst, sdr);
return 0;
}