Cod sursa(job #1294229)

Utilizator lauratalaatlaura talaat lauratalaat Data 17 decembrie 2014 09:38:33
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
int st=1,dr,d[5000001],v[5000001],n,k,i;
long long s;
void stanga ( int i ){
    if(i-d[st]==k)
        st++;
}
void dreapta ( int i){
    while(st<=dr&&v[i]<=v[d[dr]])
        dr--;
    d[++dr]=i;
}
int main(){
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    for(i=1;i<=n;i++){
        if(i > k)
            stanga(i);
        dreapta(i);
        if(i >= k)
            s+=v[d[st]];
    }
    printf("%lld\n",s);
    return 0;
}