Cod sursa(job #432618)

Utilizator DraStiKDragos Oprica DraStiK Data 2 aprilie 2010 16:00:54
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <algorithm>
using namespace std;

#define DIM 4000005

int a[DIM],dq[DIM];
long long rez;
int n,k;

void read ()
{
    int i;

    scanf ("%d%d",&n,&k);
    for (i=1; i<=n; ++i)
        scanf ("%d",&a[i]);
}

void solve ()
{
    int i,x,st,dr;

    st=1; dr=0;
    for (i=1; i<=n; ++i)
    {
        for ( ; st<=dr && a[i]<=a[dq[dr]]; --dr);
        dq[++dr]=i;
        if (i-dq[st]==k)
            ++st;
        if (i>=k)
            rez+=a[dq[st]];
    }
    printf ("%lld",rez);
}

int main ()
{
    freopen ("deque.in","r",stdin);
    freopen ("deque.out","w",stdout);

    read ();
    solve ();

    return 0;
}