Cod sursa(job #1061060)

Utilizator AndreeaPanaitAndreea Elena Panait AndreeaPanait Data 19 decembrie 2013 09:52:36
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define maxim 5000010
int n, k;
int a[maxim], deque[maxim];
int top, tail;
long long suma;

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

    scanf("%d %d ", &n, &k);
    for (i = 1; i <= n; i++)
        scanf("%d ", &a[i]);

    top = 1;
    tail = 0;

    for (i = 1; i <= n; i++)
    {
        while (top <= tail && a[i] <= a[deque[tail]]) tail--;

        deque[++tail] = i;

        if (deque[top] == i-k) top++;

        if (i >= k) suma += a[deque[top]];
    }
    printf("%lld\n", suma);
    return 0;
}