Pagini recente » Cod sursa (job #794875) | Cod sursa (job #2833694) | Cod sursa (job #1210333) | Cod sursa (job #210523) | Cod sursa (job #810841)
Cod sursa(job #810841)
#include <cstdio>
#include <deque>
using namespace std;
int n, k;
int A[5000000];
deque<int> q1, q2;
void pop() {
if (q1.front() == q2.front()) {
q2.pop_front();
}
q1.pop_front();
}
void push(int n) {
while (q2.size() && q2.back() > n)
q2.pop_back();
q2.push_back(n);
q1.push_back(n);
}
int min() {
return q2.front();
}
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", A + i);
}
for (int i = 0; i < k; i++) {
push(A[i]);
}
long long ans = min();
for (int i = k; i < n; i++) {
pop();
push(A[i]);
ans += min();
}
printf("%lld", ans);
return 0;
}