Cod sursa(job #1162954)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 1 aprilie 2014 08:30:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
#define Nmax 5000005

using namespace std;

int q[Nmax],poz[Nmax];

int main()
{
    int pr=1,ul=0,i,x,N,K;
    long long sol=0;
    freopen ("deque.in","r",stdin);
    freopen ("deque.out","w",stdout);
    scanf("%d%d", &N,&K);
    for(i=1;i<=N;++i)
    {
        scanf("%d", &x);
        while(pr<=ul && poz[pr]<=i-K)
            ++pr;
        while(pr<=ul && q[ul]>=x)
            --ul;
        q[++ul]=x;
        poz[ul]=i;
        if(i>=K)
            sol+=q[pr];
    }
    printf("%lld\n", sol);
    return 0;
}