Pagini recente » Cod sursa (job #885762) | Cod sursa (job #382270) | Cod sursa (job #1081921) | Cod sursa (job #1878078) | Cod sursa (job #1760172)
#include <iostream>
#include <cstdio>
#include <deque>
using namespace std;
const int NMAX = 5000003;
int n, k;
int A[NMAX];
long long answer;
deque<int> dq;
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf ("%d%d", &n, &k);
int i;
for (i = 1; i <= n; ++i) {
scanf ("%d", A + i);
}
for (i = 1; i < k; ++i) {
while (!dq.empty () && A[dq.back()] >= A[i])
dq.pop_back();
dq.push_back(i);
}
for (i = k; i <= n; ++i) {
while (!dq.empty() && A[dq.back()] >= A[i])
dq.pop_back();
dq.push_back(i);
int dq_front = dq.front();
if (i - dq_front >= k) {
dq.pop_front();
dq_front = dq.front();
}
answer += A[dq_front];
}
printf ("%lld", answer);
}