Cod sursa(job #1997836)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 5 iulie 2017 15:18:50
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <cstdio>

using namespace std;

int x[5000001], Deque[5000001];
int n, k, i, s, Front, Back;

int main()
{
    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]);

    Front=1; Back=0;

    for(i=1; i<=n; ++i)
    {

        /*printf("FRONT: %d  BACK: %d\nDEQUE:\n", Front, Back);
        for(int j=Front; j<=Back; ++j) printf("%d ", x[Deque[j]]);
        printf("\n\n");*/


        while(Front<=Back && x[i]<=x[Deque[Back]]) --Back;
        Deque[++Back]=i;
        if(Deque[Front]==i-k) ++Front;
        if(i>=k) s=s+x[Deque[Front]];
    }
    printf("%d", s);
    return 0;
}