classMaxQueue{public:
queue<int>q;
deque<int>ma;MaxQueue(){}intmax_value(){if(q.empty())return-1;return ma.front();}voidpush_back(int v){
q.push(v);while(ma.size()&&v>ma.back())ma.pop_back();
ma.push_back(v);}intpop_front(){if(q.empty())return-1;int res=q.front();
q.pop();if(res==ma.front())ma.pop_front();return res;}};/**
* Your MaxQueue object will be instantiated and called as such:
* MaxQueue* obj = new MaxQueue();
* int param_1 = obj->max_value();
* obj->push_back(value);
* int param_3 = obj->pop_front();
*/