Cod sursa(job #306117)

Utilizator DraStiKDragos Oprica DraStiK Data 19 aprilie 2009 19:58:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define DIM 5000005
int a[DIM],dq[DIM];
long long s;
int n,k;
void read ()
{
    int i,x;
    scanf ("%d%d",&n,&k);
    for (i=1; i<=n; ++i)
        scanf ("%d",&a[i]);
}
void solve ()
{
    int i,st,dr;
    for (st=i=1, dr=0; i<=n; ++i)
    {
        for ( ; st<=dr && a[i]<=a[dq[dr]]; --dr);
        dq[++dr]=i;
        if (dq[st]==i-k)
            ++st;
        if (i>=k)
            s+=a[dq[st]];
    }
    printf ("%lld",s);
}
int main ()
{
    freopen ("deque.in","r",stdin);
    freopen ("deque.out","w",stdout);
    read ();
    solve ();
    return 0;
}