Pagini recente » Cod sursa (job #631743) | Cod sursa (job #2747982) | Cod sursa (job #2628780) | Cod sursa (job #2185897) | Cod sursa (job #2709741)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
int sum[50001], pos[50001];
int main() {
int n, k;
fin >> n >> k;
for (int i = 1; i <= n; ++i) {
int nr;
fin >> nr;
sum[i] = sum[i - 1] + nr;
}
int start = 0, finish = 0, pos_1 = 1, pos_2 = n, sum_max = sum[k];
pos[start] = 0;
for (int i = 1; i <= n; ++i) {
if (sum_max < sum[i] - sum[pos[start]] && i - pos[start] >= k) {
pos_1 = pos[start] + 1;
pos_2 = i;
sum_max = sum[i] - sum[pos[start]];
}
if (sum[i] < sum[pos[finish]]) {
pos[++finish] = i;
}
if (start < finish && i - pos[start + 1] >= k - 1) {
start++;
}
}
fout << pos_1 << ' ' << pos_2 << ' ' << sum_max;
return 0;
}