Pagini recente » Cod sursa (job #1418618) | Cod sursa (job #1326767) | Cod sursa (job #793651) | Cod sursa (job #149998) | Cod sursa (job #3217103)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
long long sum;
int n, v[5000001], k;
deque<int> q;
int main()
{
fin >> n >> k;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
q.push_back(1);
for (int i = 2; i <= k; ++i) {
if (!q.empty()) {
if (v[i] > v[q.back()]) {
q.push_back(i);
}
else {
while (!q.empty() && v[i] < v[q.back()]) {
q.pop_back();
}
q.push_back(i);
}
}
else q.push_back(i);
}
sum += v[q.front()];
for (int i = k + 1; i <= n; ++i) {
if (q.front() == i - k) {
q.pop_front();
}
if (!q.empty()) {
if (v[i] > v[q.back()]) {
q.push_back(i);
}
else {
while (!q.empty() && v[i] < v[q.back()]) {
q.pop_back();
}
q.push_back(i);
}
}
else q.push_back(i);
sum += v[q.front()];
}
fout << sum;
return 0;
}