Pagini recente » Cod sursa (job #2109811) | Istoria paginii runda/tema_lee | Istoria paginii runda/orange_morning | Cod sursa (job #2390226) | Cod sursa (job #1753826)
#include <bits/stdc++.h>
#define NMAX 5000000
using namespace std;
int N, K, numbers[NMAX];
long long sum = 0;
deque<int> dq;
void addDQ(int index) {
while (!dq.empty() && numbers[dq.back()] > numbers[index]) dq.pop_back();
dq.push_back(index);
}
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &N, &K);
for (int it = 0; it < K; ++it) {
scanf("%d", &numbers[it]);
addDQ(it);
}
sum += (long long) numbers[dq.front()];
for (int it = K; it < N; ++it) {
if (numbers[dq.front()] == numbers[it - K]) dq.pop_front();
scanf("%lld", &numbers[it]);
addDQ(it);
sum += numbers[dq.front()];
}
printf("%lld", sum);
return 0;
}