Cod sursa(job #1607107)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 20 februarie 2016 20:29:29
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
using namespace std;

#define DIM 5000001
int v[DIM], D[DIM];


int main()
{

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


    int n, k, i, j, t, d, st, dr;
    long long s = 0;

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

    D[1] = st = dr = 1;
    for( i = 2; i <= n; ++i ){

        while( st <= dr && v[i] <= v[D[dr]] )
            dr--;

        dr++;
        D[dr] = i;

        while( D[st] <= i - k ) st++;
        if( i >= k ) s = s + (long long)v[D[st]];

    }

    printf("%lld",s);




    return 0;
}