Cod sursa(job #3345861)

Utilizator nstefanNeagu Stefan nstefan Data 11 martie 2026 15:44:19
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <deque>
using namespace std;

class Solver {
  int K;
  int index;
  std::deque<std::pair<int, int>> dq;

public:
  explicit Solver(int K_) : K{K_}, index{1} {}

  void appendValue(int value) {
    while (dq.size() && (
      dq.back().first > value ||
      dq.back().second < index - K
    )) dq.pop_back();

    dq.emplace_back(value, index);
    index++;
  }

  int getMin() {
    while (dq.size() && dq.front().second < index - K)
      dq.pop_front();
    return dq.front().first;
  }
};

int32_t main() {
// #define LOCAL

#ifndef LOCAL
  freopen("deque.in", "r", stdin);
  freopen("deque.out", "w", stdout);
#endif

  int n, k; cin >> n >> k;
  Solver solver{k};

  long long sumOfMins = 0;
  for (int i = 1; i <= n; i++) {
    int value; cin >> value;
    solver.appendValue(value);
    if (i >= k) sumOfMins += solver.getMin();
  }

  cout << sumOfMins;
}