Cod sursa(job #235548)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 24 decembrie 2008 13:50:35
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
# include <cstdio>

# define FIN "deque.in"
# define FOUT "deque.out"
# define MAXN 5000005

int N, K, i, begin, end,rez;
int X[MAXN];
long long Deque[MAXN];

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d%d",&N,&K);
        for (i = 1; i <= N; ++i)
           scanf("%d",&X[i]);
           
        begin = 1; end = rez = 0;
        for (i = 1; i <= N; ++i)
           {
              for (; begin <= end && X[Deque[end]] > X[i]; --end);
              Deque[++end] = i;
              if (Deque[begin] < i - K + 1) ++begin;
              if (i >= K) rez += X[Deque[begin]];
           }
        
        printf("%lld",rez);
        
        return 0;
    }