Pagini recente » Cod sursa (job #2289881) | Cod sursa (job #193699) | Cod sursa (job #879858) | Cod sursa (job #1268864) | Cod sursa (job #2439809)
#include <stdio.h>
#include <deque>
inline int read() {
int n = 0;
int neg = 1;
char c = getchar_unlocked();
if (c == '-') {
neg = -1;
}
while (!('0' <= c && c <= '9')) {
c = getchar_unlocked();
}
while ('0' <= c && c <= '9') {
n = n * 10 + c - '0';
c = getchar_unlocked();
}
return n * neg;
}
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int n, k;
n = read(), k = read();
int a[n];
long long sum = 0;
for (int i = 1 ; i <= n ; ++i) {
a[i] = read();
}
std::deque<int> deq;
for (int i = 1 ; i <= n ; ++i) {
while (!deq.empty() && a[i] <= a[deq.back()]) {
deq.pop_back();
}
deq.push_back(i);
if (deq.front() == i - k) {
deq.pop_front();
}
if (i >= k) {
sum += a[deq.front()];
}
}
printf("%lld\n", sum);
return 0;
}