Cod sursa(job #629953)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 4 noiembrie 2011 11:30:34
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>
int q[5000001],r[5000001],n,k,p,u;
long long s;

inline void push(int x,int i){
    while(u>=p&&q[u]>=x)u--;
    q[++u]=x; r[u]=i;
}

inline void pop(int x){
    while(p<=u&&r[p]<=x)p++;
}

int main(){
    int i,x;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
        scanf("%d %d",&n,&k);
        for(i=1;i<=k;i++){scanf("%d",&x);push(x,i);};s=q[p];
        for(i=k+1;i<=n;i++){
            scanf("%d",&x);
            pop(i-k);push(x,i);s+=q[p];}
    printf("%lld\n",s);
}