Cod sursa(job #593875)

Utilizator Smaug-Andrei C. Smaug- Data 5 iunie 2011 00:24:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <cstdio>

#define MAXN 5000000

int main(){

  freopen("deque.in", "r", stdin);
  freopen("deque.out", "w", stdout);

  int N, K, l, r, i, a;
  static int D[MAXN], P[MAXN];
  long long res = 0;

  scanf("%d%d", &N, &K);
  l=0; r=-1;

  for(i=1; i<=N; i++){
    scanf("%d", &a);
    
    if(l<=r && i-P[l]>=K)
      l++;
    
    while(l<=r && a<=D[r])
      r--;

    r++;
    D[r]=a;
    P[r]=i;

    if(i>=K)
      res+=D[l];

  }

  printf("%lld\n", res);

  return 0;

}