Cod sursa(job #1311459)

Utilizator nytr0gennytr0gen nytr0gen Data 8 ianuarie 2015 11:16:24
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#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;
}