Cod sursa(job #323933)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 14 iunie 2009 10:33:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>

#define maxn 5000010

long n, i, j, k, p, u, x;
long a[maxn], dq[maxn];
long long sol;

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