Cod sursa(job #235719)

Utilizator crawlerPuni Andrei Paul crawler Data 25 decembrie 2008 15:08:19
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>

#define Nmax 5000100

int n,k,dq[Nmax],p[Nmax],st,dr;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    
    scanf("%d%d",&n,&k);
    
    int tmp;
    unsigned long long ret=0;
    st=1;dr=0;
    for (int i=1;i<=n;++i)
    {
        scanf("%d", &tmp);
        while (st<=dr && dq[dr] >= tmp) --dr;
        while (st<=dr && p[st]+k<=i) ++st;
        ++dr;
        dq[dr] = tmp;
        p[dr] = i;
        if (i>=k) ret += dq[st];            
    }
    
    printf("%lld\n", ret);
    
    return 0;    
}