Pagini recente » Cod sursa (job #2985900) | Cod sursa (job #1875694) | Cod sursa (job #416924) | Cod sursa (job #985400) | Cod sursa (job #2451319)
#include <bits/stdc++.h>
const int BUFFER_SIZE = 1 << 17;
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 x = 0, neg = 1;
char c = next();
if (c == '-') {
neg = -1;
}
while (!('0' <= c && c <= '9')) {
c = next();
}
while ('0' <= c && c <= '9') {
x = (x << 3) + (x << 1) + (c - '0');
c = next();
}
return x * neg;
}
inline void print(int &n) {
char snum[65];
int i = 0, semn = 1;
if (n < 0) {
semn = -1;
}
do {
snum[i++] = (semn * n) % 10 + '0';
n /= 10;
} while (n);
--i;
if (semn == -1) {
putchar('-');
}
while (i >= 0) {
putchar(snum[i--]);
}
putchar(' ');
}
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;
print(max_sum), print(starting_pos), print(last_pos);
return 0;
}