Pagini recente » Rating Radu Minea (raduq) | Cod sursa (job #1938124) | Cod sursa (job #1305447) | Cod sursa (job #1007066) | Cod sursa (job #2444583)
#include <bits/stdc++.h>
inline int read() {
int n = 0;
bool neg = false;
char c = getchar_unlocked();
if (c == '-') {
neg = true;
}
while (!('0' <= c && c <= '9')) {
c = getchar_unlocked();
}
while ('0' <= c && c <= '9') {
n = (n << 3) + (n << 1) + (c - '0');
c = getchar_unlocked();
}
if (neg) {
return n *= -1;
}
return n;
}
int main() {
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
int n;
n = read();
std::vector<int> v(n), start(n), dp(n);
for (int i = 0 ; i < n ; ++i) {
v[i] = read();
}
dp[0] = v[0];
start[0] = 0;
for (int i = 1 ; i < n ; ++i) {
if (dp[i - 1] >= 0) {
dp[i] = dp[i - 1] + v[i];
start[i] = start[i - 1];
} else {
dp[i] = v[i];
start[i] = i;
}
}
auto res = std::max_element(dp.begin(), dp.end());
int distance = std::distance(dp.begin(), res);
printf("%d %d %d\n", *res, start[distance] + 1, distance + 1);
return 0;
}