Pagini recente » Cod sursa (job #830297) | Cod sursa (job #1152907) | Cod sursa (job #2799211) | Cod sursa (job #2123016) | Cod sursa (job #3308622)
#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
const int N_MAX = 6e6;
int N; int64 v[1 + N_MAX];
struct seq {
int64 sum;
int left;
} dp[1 + N_MAX];
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int main()
{
fin >> N;
for (int i = 1; i <= N; i ++) fin >> v[i];
dp[0] = {0, 0};
for (int i = 1; i <= N; i ++) {
if (dp[i - 1].sum < 0)
dp[i] = {v[i], i};
else
dp[i] = {dp[i - 1].sum + v[i], dp[i - 1].left};
}
int64 answer = 0; int right;
for (int i = 1; i <= N; i ++) {
if (dp[i].sum > answer) {
answer = dp[i].sum;
right = i;
}
else if (dp[i].sum == answer && dp[i].left < dp[right].left)
right = i;
}
fout << answer << " " << dp[right].left << " " << right << "\n";
return 0;
}