Pagini recente » Cod sursa (job #1747470) | Cod sursa (job #236203) | Cod sursa (job #1437666) | Cod sursa (job #1181212) | Cod sursa (job #356295)
Cod sursa(job #356295)
#include <stdio.h>
#define FISIN "secv2.in"
#define FISOUT "secv2.out"
FILE *fin, *fout;
#define MAXN 50000
int n, k;
int a[MAXN], p[MAXN], max[MAXN];
int main() {
fin = fopen(FISIN, "rt");
fout = fopen(FISOUT, "wt");
fscanf(fin, "%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
fscanf(fin, "%d", a + i);
a[0] = 0;
p[0] = a[0]; for (int i = 1; i <= n; ++i) p[i] = p[i - 1] + a[i];
max[n] = n;
for (int i = n - 1; i >= 0; --i)
if (p[max[i + 1]] > p[i])
max[i] = max[i + 1];
else
max[i] = i;
int best_score = p[n], best_start = 1, best_end = n;
for (int i = 0; i <= n - k; ++i) {
int end = max[i + k];
int score = p[end] - p[i];
if (score > best_score) {
best_score = score;
best_start = i + 1;
best_end = end;
}
}
fprintf(fout, "%d %d %d\n", best_start, best_end, best_score);
fclose(fout);
fclose(fin);
return 0;
}