Cod sursa(job #2465285)
| Utilizator | Data | 29 septembrie 2019 19:01:49 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
#define NMAX 6000000
int N, v[NMAX];
int main () {
in >> N;
for (int i = 0; i < N; i++) {
in >> v[i];
}
int smax=INT_MIN, s = v[0],first, lo, hi;
for (int i = 1; i < N; i++) {
if (s + v[i] < v[i]) {
first = i;
s = v[i];
}
else
s+= v[i];
if (s > smax) {
lo = first;
hi = i;
smax = s;
}
}
out << smax << " " << lo+1 << " " << hi+1 << '\n';
}
