Pagini recente » Cod sursa (job #689422) | Borderou de evaluare (job #1567443) | Borderou de evaluare (job #1374911) | Cod sursa (job #2247878) | Cod sursa (job #1939361)
#include <stdio.h>
#define MAXN 6000000
#define INF 2000000000
int s[MAXN], v[MAXN];
int max(int a, int b) {
return a > b ? a : b;
}
int main(void) {
int n, maxSum, beg, end, flag;
FILE *f = fopen("ssm.in", "r");
fscanf(f, "%d", &n);
for (int i = 0; i < n; ++i) {
fscanf(f, "%d", &v[i]);
}
fclose(f);
maxSum = -INF;
beg = end = 0;
flag = 0;
for (int i = 0; i < n; ++i) {
s[i] = max(0, s[i - 1] + v[i]);
if (flag < 0) {
beg = i;
flag = v[i];
} else {
flag += v[i];
}
if (maxSum < s[i]) {
maxSum = s[i];
end = i;
}
}
f = fopen("ssm.out", "w");
fprintf(f, "%d %d %d\n", maxSum, beg + 1, end + 1);
fclose(f);
return 0;
}