Pagini recente » Cod sursa (job #2498366) | Cod sursa (job #3345482) | Borderou de evaluare (job #1588818) | Borderou de evaluare (job #3335253) | Cod sursa (job #3345478)
#include <algorithm>
#include <fstream>
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
int n, start;
vector<int> v, dp, index;
fin >> n;
v.resize(n + 1);
dp.resize(n + 1);
index.resize(n + 1);
for (int i = 1; i <= n; i++) {
fin >> v[i];
}
dp[1] = v[1];
start = 1;
for (int i = 2; i <= n; i++) {
if (dp[i - 1] >= 0) {
dp[i] = dp[i - 1] + v[i];
index[i] = index[i - 1];
} else if (dp[i - 1] < 0) {
dp[i] = v[i];
index[i] = i;
}
}
int maxx = dp[1];
int end = 1;
for (int i = 2; i <= n; i++) {
if (dp[i] > maxx) {
maxx = dp[i];
start = index[i];
end = i;
}
}
fout << maxx << " " << start << " " << end;
return 0;
}