Cod sursa(job #432620)

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

#define DIM 5000005

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,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;
}