Pagini recente » Monitorul de evaluare | Cod sursa (job #2803469) | Cod sursa (job #1898513) | Cod sursa (job #914713) | Cod sursa (job #3355337)
#include <fstream>
#include <vector>
using namespace std;
vector<int> v;
vector<int> dp;
int main(void) {
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n;
fin >> n;
v.resize(n);
dp.assign(n, 0);
for (int i = 0; i < n; i++) {
fin >> v[i];
}
dp[0] = v[0];
for (int i = 1; i < n; i++) {
dp[i] = max(v[i], dp[i - 1] + v[i]);
}
int max_index = 0;
for (int i = 0; i < n; i++) {
if (dp[max_index] < dp[i]) max_index = i;
}
int min_index = max_index;
while (min_index >= 1 && dp[min_index] - v[min_index] == dp[min_index - 1]) {
min_index--;
}
fout << dp[max_index] << ' ' << min_index + 1 << ' ' << max_index + 1;
return 0;
}