Cod sursa(job #2140556)

Utilizator 24601Dan Ban 24601 Data 23 februarie 2018 17:01:29
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#include <stdlib.h>

#define SIZE 5000000

struct dqe {
    int x;
    int i;
};

static struct dqe dq[SIZE];

int main(void)
{
    int n, k, x, i, t, h;
    long long r;
    char buf[0x20];

    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);

    scanf("%d %d\n", &n, &k);
    t = h = 0;
    r = 0;

    for (i = 0; i < n; i++) {
        fgets(buf, sizeof buf, stdin);
        x = atoi(buf);

        while (t - 1 >= h && dq[t-1].x >= x) {
            t--;
        }

        dq[t].x = x;
        dq[t].i = i;
        t++;

        if (i - k >= dq[h].i) {
            h++;
        }

        if (i >= k - 1) {
            r += dq[h].x;
        }
    }

    printf("%lld\n", r);

    return 0;
}