Cod sursa(job #2049362)

Utilizator GhiciCineRazvan Dumitriu GhiciCine Data 27 octombrie 2017 09:15:24
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
#define MAXN 5000000

using namespace std;

long long v[MAXN + 5], d[MAXN + 5];
int main() {

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

  long long n, k, st, dr, sum, i;

  scanf( "%lld%lld", &n, &k );

  st = 0;
  dr = -1;
  sum = 0;
  for( i = 0; i < n; i++ ) {
    scanf( "%lld", &v[i] );
    if( st <= dr && d[st] == i - k )
      st++;
    while( st <= dr && v[i] <= v[d[dr]] )
      dr--;
    dr++;
    d[dr] = i;
    if( i >= k - 1 )
      sum += v[d[st]];
  }
  printf( "%lld", sum );
  return 0;
}