Pagini recente » Cod sursa (job #156915) | Cod sursa (job #152414) | Cod sursa (job #562246) | Cod sursa (job #2014517) | Cod sursa (job #1370469)
#include <fstream>
#include <iostream>
#include <vector>
#include <limits>
int main()
{
std::ifstream fin("secv2.in");
std::ofstream fout("secv2.out");
int N, K;
fin >> N >> K;
std::vector<int> v(N);
for (auto &i : v)
fin >> i;
std::vector<int> sums(N);
for (auto i = 0; i < N; ++i)
sums[i] = i ? sums[i - 1] + v[i] : v[i];
int start = 0;
int finalStart, finalEnd;
int max_sum = std::numeric_limits<int>::min();
for (int end = K - 1; end < N; ++end) {
if (sums[end - K] - (start ? sums[start - 1] : 0) < 0)
start = end - K + 1;
int crt_sum = sums[end] - (start ? sums[start - 1] : 0);
if (crt_sum > max_sum) {
max_sum = crt_sum;
finalStart = start;
finalEnd = end;
}
}
fout << finalStart + 1 << " " << finalEnd + 1 << " " << max_sum << std::endl;
return 0;
}