Cod sursa(job #235549)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 24 decembrie 2008 13:52:05
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
# include <cstdio>

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

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

    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\n",rez);
        
        return 0;
    }