Cod sursa(job #253188)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 5 februarie 2009 15:33:45
Problema Deque Scor 15
Compilator c Status done
Runda Arhiva educationala Marime 0.52 kb
#include<stdio.h>
#define N 5000002

int a[N],dq[N];

long long sol;

int main(){
int n, k, s, d, i;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

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

    s = 1;d = k-1;dq[1]=1;

    for (i = 1; i <= n; i++){

        if (dq[s] <= i-k && s <= d) s++;

        for ( ;a[dq[d]] >= a[i] && s <= d; d--);

        dq[++d] = i;
        if (i>=k) sol+= a[dq[s]];
    }
    printf("%lld\n",sol);

    return 0;
}