Cod sursa(job #236529)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 27 decembrie 2008 20:41:36
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>

#define Nmax 5000010

int D[Nmax],A[Nmax],i,j,u,p,N,K;
long long suma;

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", &A[i]);
          
    u=p=1;
    
    for (i=1;i<=N;++i)
          {
                while (u<=p  && A[i]<=A[D[p]])
                     p--;
                p++;
                D[p]=i;
                while (D[u]==i-K)
                     u++;
                if (i>=K)
                    //printf("%d\n", A[D[u]]);
                    suma+=A[D[u]];
          }
    
    printf("%lld", suma);
    
    return 0;
}