Cod sursa(job #1391898)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 18 martie 2015 11:23:04
Problema Deque Scor 60
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>

int v[5000000];
int deque[5000000];
long long  p,u,n,k;
long long  i,min;

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]);
    }
    p=1;
    u=1;
    for(i=1;i<=n;i++){
        while(p<=u && v[i]<v[deque[u]]){
            u--;
        }
        deque[++u]=i;
        if(i-k==deque[p]){
            p++;
        }
       if(i>=k){
            min=1LL*min+v[deque[p]];
       }
    }
//    for(i=1;i<=n;i++)
//    {
//        while(p<=u && v[i]<v[d[u]])
//        u--;
//        d[++u]=i;
//        if(i-k==d[p])p++;
//        if(i>=k)s+=v[d[p]];
//
//
//    }

    printf("%lld",min);
    return 0;
}