lmori's Library

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub lmorinn/library

:heavy_check_mark: Monotonic Queue (Min Queue)
(data-structure/others/MonotonicMinQueue.hpp)

概要

todo

計算量

todo

Required by

Verified with

Code

template <class T>
class MonotonicMinQueue {
 private:
  queue<T> que;
  deque<T> deq;

 public:
  void push(const T& x) {
    que.push(x);
    while (deq.size() > 0 and deq.back() > x) deq.pop_back();
    deq.push_back(x);
  }

  void pop() {
    if (que.front() == deq.front()) deq.pop_front();
    que.pop();
  }

  const T& front() const {
    return que.front();
  }

  bool empty() const {
    return que.empty();
  }

  const T& minimum() const {
    return deq.front();
  }
};
#line 1 "data-structure/others/MonotonicMinQueue.hpp"
template <class T>
class MonotonicMinQueue {
 private:
  queue<T> que;
  deque<T> deq;

 public:
  void push(const T& x) {
    que.push(x);
    while (deq.size() > 0 and deq.back() > x) deq.pop_back();
    deq.push_back(x);
  }

  void pop() {
    if (que.front() == deq.front()) deq.pop_front();
    que.pop();
  }

  const T& front() const {
    return que.front();
  }

  bool empty() const {
    return que.empty();
  }

  const T& minimum() const {
    return deq.front();
  }
};
Back to top page