This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "data-structure/others/MonotonicMinQueue.hpp"todo
todo
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();
}
};