class MaxQueue {
public:
deque<int> q;
deque<int> q_max;
MaxQueue() {
}
int max_value() {
if(!q_max.empty())
return q_max.front();
return -1;
}
void push_back(int value) {
q.push_back(value);
while(!q_max.empty() && value>q_max.back())
q_max.pop_back();
q_max.push_back(value);
}
int pop_front() {
if(q.empty()) return -1;
// 判断出队的是不是最大值
if(q.front()==q_max.front())
q_max.pop_front();
int value=q.front();
q.pop_front();
return value;
}
};