Mi solucion:
1. Pensé en usar la cola para atravesarla cuando buscaba el valor máximo
class MaxQueue {
public:
queue<int> q;
MaxQueue() {
}
int max_value() {
if(q.empty()) return -1;
int a=0;
for(int i=0;i<q.size();i++){
if(q.front()>a) a=q.front();
q.push(q.front());
q.pop();
}
return a;
}
void push_back(int value) {
q.push(value);
}
int pop_front() {
if(q.empty()) return -1;
int a=q.front();
q.pop();
return a;
}
};
2. La mayoría de los más rápidos usan deque. Gracias a esta pregunta, también aprendo sobre deque