Cod sursa(job #723231)

Utilizator sana1987Laurentiu Dascalu sana1987 Data 25 martie 2012 07:03:12
Problema Deque Scor 25
Compilator c Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>

#define N 5000001

int data[N];
int queue[N];
int back, front;
long sum = 0;
int n, k;
int i;

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

    back = 0; front = 1;

    scanf("%d %d", &n, &k);

    for (i = 0; i < n; i++) {
        scanf("%d", &data[i]);
    }

    for (i = 0; i < n; i++) {
        while (front <= back && data[i] <= data[queue[back]]) back--;
        queue[++back] = i;
        if (queue[front] == i - k) front++;
        if (i >= k - 1) {
            sum += data[queue[front]];
        }
    }

    printf("%ld\n", sum);

    return 0;
}