Cod sursa(job #2211444)

Utilizator CiobaCatalinCioba Catalin CiobaCatalin Data 10 iunie 2018 12:36:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
#include <vector>
#include <deque>

using namespace std;

int main() {
  ifstream in;
  ofstream out;

  in.open("deque.in");
  out.open("deque.out");

  int n, k;
  in >> n >> k;

  vector<int> arr(n);
  for (int i = 0; i < n; ++i) {
    in >> arr[i];
  }

  deque<int> d;
  long long res = 0;
  for (int i = 0; i < n; ++i) {
    while (!d.empty() && arr[d.back()] > arr[i])
      d.pop_back();

    d.push_back(i);

    if (d.front() == i - k)
      d.pop_front();

    if (i >= k - 1) {
      res += arr[d.front()];
    }
  }

  out << res;

  in.close();
  out.close();

  return 0;
}