Cod sursa(job #1804038)

Utilizator FlowstaticBejan Irina Flowstatic Data 12 noiembrie 2016 10:15:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#define NMAX 5000010
#define FOR(i,a,b) for(int i = a; i<=b; i++)

int N, K, st, fi;
int a[NMAX], d[NMAX];
long long int rez;

FILE* fin = fopen("deque.in","r");
FILE* fout = fopen("deque.out","w");

int main()
{
    fscanf(fin,"%d %d", &N, &K);
    FOR(i,1,N)
        fscanf(fin, "%d", &a[i]);

    st = 1, fi = 0;

    FOR(i,1,N)
    {
        while( st<=fi && a[i] <= a[d[fi]] )
        {
            fi--;
        }

        d[++fi] = i;

        if(d[st] == i-K)
        {
            st++;
        }

        if(i >= K)
        {
            rez += a[d[st]];
        }
    }

    fprintf(fout,"%lld\n", rez);
    return 0;
}