Pagini recente » Cod sursa (job #2737599) | Cod sursa (job #720175) | Cod sursa (job #1792345) | Cod sursa (job #1398830) | Cod sursa (job #2439797)
#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 << 3) + (n << 1) + 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.size() >= 1 && 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;
}