Cod sursa(job #932066)

Utilizator thebest001Neagu Rares Florian thebest001 Data 28 martie 2013 18:08:19
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>

int deq[5000001];
int   v[5000001];
int st=1;
int dr=0;
int n,k;
long long sum=0;

void stanga(int i){
    if (i-deq[st]==k)
        st++;
}
void dreapta(int i){
    while (st<=dr && v[i]<=v[deq[dr]])
        dr--;
}

int main(){

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


    scanf("%d %d",&n,&k);
    for (int i=1;i<=n;i++){
        scanf("%d",&v[i]);
        if (i>k)stanga(i);
        dreapta(i);
        deq[++dr]=i;
        if (i>=k) sum+=v[deq[st]];
    }
    printf("%lld",sum);
    return 0;
}