class Solution {
  public:
    bool IsPopOrder(vector<int> pushV, vector<int> popV) {
        int size = pushV.size();
        int push_idx = 0;
        int pop_idx = 0;
        stack<int> s;
        while (push_idx < size) {
            s.push(pushV[push_idx++]);
            while (!s.empty() &&  s.top() == popV[pop_idx]) {
                s.pop();
                pop_idx++;
            }
        }
        return s.empty();
    }
};