Cod sursa(job #840947)

Utilizator Athena99Anghel Anca Athena99 Data 23 decembrie 2012 16:09:34
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#include <cassert>

const int dim=5000005;
int n=0,k=0,i=0,v[dim],deque[dim],start=1,stop=0;
long long s=0;

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

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

    for (i=1; i<n+1; ++i)
    {
        while (start<stop+1 && v[i]<v[deque[stop]]+1)
            --stop;

        deque[++stop]=i;

        if (deque[start]==i-k)
            ++start;

        if (i+1>k)
            s=s+v[deque[start]];
    }

    assert(printf("%I64d",s));

    fclose(stdin);
    fclose(stdout);

    return 0;
}