Pagini recente » Borderou de evaluare (job #2017691) | Cod sursa (job #364452) | Borderou de evaluare (job #544906) | Cod sursa (job #759179) | Cod sursa (job #2553016)
#include <bits/stdc++.h>
#include <bits/stdc++.h>
const int BUFFER_SIZE = 1 << 17;
const int MOD = (1e9 + 7);
char buffer[BUFFER_SIZE];
int pos = BUFFER_SIZE;
inline char next() {
if (pos == BUFFER_SIZE) {
fread(buffer, 1, BUFFER_SIZE, stdin);
pos = 0;
}
return buffer[pos++];
}
inline int read() {
int n = 0;
char c = next();
while (!('0' <= c && c <= '9')) {
c = next();
}
while ('0' <= c && c <= '9') {
n = (n << 3) + (n << 1) + (c - '0');
c = next();
}
return n;
}
inline void print(int n) {
char snum[65];
int i = 0;
do {
snum[i++] = n % 10 + '0';
n /= 10;
} while (n);
--i;
while (i >= 0) {
putchar(snum[i--]);
}
putchar('\n');
}
int main() {
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
int n;
n = read();
int dp, init_pos, starting_pos, last_pos, sum = 0, max_sum = INT_MIN;
for (int i = 0 ; i < n ; ++i) {
dp = read();
if (sum >= 0) {
sum += dp;
} else {
sum = dp;
init_pos = i;
}
if (max_sum < sum) {
max_sum = sum;
starting_pos = init_pos;
last_pos = i;
}
}
++starting_pos;
++last_pos;
printf("%d %d %d\n", max_sum, starting_pos, last_pos);
return 0;
}