Pagini recente » Cod sursa (job #1705533) | Cod sursa (job #2970327) | Cod sursa (job #1945606) | Cod sursa (job #1407096) | Cod sursa (job #1420905)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <limits>
using namespace std;
ifstream in("secv2.in");
ofstream out("secv2.out");
int main()
{
int N, K;
in >> N >> K;
vector<int> sums(N + 1, 0);
int nb;
for (int i = 1; i <= N; i++) {
in >> nb;
sums[i] = sums[i - 1] + nb;
}
deque<int> dq;
for (int i = 1; i <= K; i++) dq.push_back(i);
int finalStart = 1, finalEnd = 1, maxSum = numeric_limits<int>::min();
for (int i = K; i <= N; i++) {
while (sums[dq.back() - K] - sums[dq.front() - 1] < 0)
dq.pop_front();
dq.push_back(i);
if (sums[dq.back()] - sums[dq.front() - 1] > maxSum) {
maxSum = sums[dq.back()] - sums[dq.front() - 1];
finalStart = dq.front();
finalEnd = dq.back();
}
}
out << finalStart << " " << finalEnd << " " << maxSum << '\n';
return 0;
}