Pagini recente » Cod sursa (job #961729) | Cod sursa (job #1193208) | Cod sursa (job #633598) | Cod sursa (job #2750328) | Cod sursa (job #3326356)
#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, best_right;
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++) {
dp = max(0, dp + v[i]);
if (max < dp) {
max = dp;
best_left = left;
best_right = right;
}
if (dp == 0) {
left = i;
right = i;
} else {
right++;
}
}
fprintf(fo, "%d %d %d", max, left, right);
fclose(f);
fclose(fo);
free(v);
return 0;
}