Cod sursa(job #1971631)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 20 aprilie 2017 18:20:55
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#include <deque>

typedef long long i64;
const int MAXN = 5e6;

int v[MAXN];
std::deque <int> dq;

int main() {
  int n, k;
  i64 sol;
  FILE *f = fopen("deque.in", "r");
  fscanf(f, "%d%d", &n, &k);
  for (int i = 0; i < n; ++i) {
    fscanf(f, "%d", &v[i]);
  }
  fclose(f);
  sol = 0;
  for (int i = 0; i < n; ++i) {
    if (i == dq.front() + k) {
      dq.pop_front();
    }
    while (!dq.empty() && v[dq.back()] >= v[i]) {
      dq.pop_back();
    }
    dq.push_back(i);
    if (i + 1 >= k) {
      sol += v[dq.front()];
    }
  }
  f = fopen("deque.out", "w");
  fprintf(f, "%lld\n", sol);
  fclose(f);
  return 0;
}