Cod sursa(job #2850523)
| Utilizator | Data | 16 februarie 2022 21:34:37 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 95 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include <iostream>
#include <fstream>
using namespace std;
int n, l, r, maxSum, v[6000000], bestSum[6000000];
int main() {
ifstream fin("ssm.in");
ofstream fout("ssm.out");
fin >> n;
for (int i = 0; i < n; ++i) {
fin >> v[i];
bestSum[i] = max(v[i], v[i] + bestSum[i - 1]);
}
maxSum = bestSum[0];
for (int i = 1; i < n; ++i) {
if (maxSum < bestSum[i]) {
maxSum = bestSum[i];
r = i;
}
}
l = r;
while (l > 0 && bestSum[l - 1] > 0) {
--l;
}
fout << maxSum << ' ' << l + 1 << ' ' << r + 1;
return 0;
}
