Pagini recente » Cod sursa (job #2152442) | Cod sursa (job #2133526) | Cod sursa (job #2107498) | Cod sursa (job #2857278) | Cod sursa (job #1311459)
#include <cstdio>
using namespace std;
const int NMAX = 5000000;
int v[NMAX];
int que[NMAX] = {0};
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int N, K; scanf("%d%d", &N, &K);
for (int i = 0; i < N; i++) {
scanf("%d", &v[i]);
}
int front = 0, back = 0;
long long sum = 0;
for (int i = 0; i < N; i++) {
if (que[front] <= i - K)
front++;
while (front < back && v[ que[back - 1] ] > v[i]) {
back--;
}
que[back++] = i;
if (i + 1 >= K)
sum += 1LL * v[ que[front] ];
}
printf("%lld\n", sum);
return 0;
}