Pagini recente » Cod sursa (job #1829543) | Cod sursa (job #1660455) | Cod sursa (job #3311742) | Cod sursa (job #3311827) | Cod sursa (job #3326361)
#include <stdio.h>
#include <stdlib.h>
#define max(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
int main() {
FILE* f = fopen("ssm.in", "r");
FILE* fo = fopen("ssm.out", "w");
int n;
int* v;
int dp;
int left, right;
int best_left = 0;
int best_right = 0;
int max = 0;
fscanf(f, "%d\n", &n);
v = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
fscanf(f, "%d ", &v[i]);
}
dp = v[0];
left = 0;
right = 0;
for (int i = 1; i < n; i++) {
if (dp == 0) {
left = i;
right = i;
} else {
right++;
}
dp = max(0, dp + v[i]);
if (max < dp) {
max = dp;
best_left = left;
best_right = right;
}
}
fprintf(fo, "%d %d %d", max, best_left + 1, best_right + 1);
fclose(f);
fclose(fo);
free(v);
return 0;
}