Cod sursa(job #255737)

Utilizator MarquiseMarquise Marquise Data 10 februarie 2009 15:43:38
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>

#define NMAX 5000001

int N, K, x[NMAX], poz[NMAX];
long long sum;

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

    scanf("%d %d", &N, &K);
    for ( i = 1; i <= N; i++)
        scanf("%d", &x[i]);
    beg = end = 1;
    poz[1] = 1;

    for ( i = 2; i <= N; i++)
    {
        if ( poz[beg] + K <= i)
            beg++;
            
        for (; x[i] < x[poz[end]] && beg <= end; --end);
        
        poz[++end] = i;

        if ( i >= K)
            sum += x[poz[beg]];
        
    }

    printf("%lld\n", sum);
    return 0;
}