class MinStack
{
private:
    stack<int> s1;
    stack<int> s2;

public:
    void push(int x)
    {
        s1.push(x);
        if (s2.empty() || x <= getMin())
            s2.push(x);
    }
    void pop()
    {
        //在这里判断一下就是s2最小栈 二个栈中栈顶元素相同最小栈中的元素才会出栈;
        if (s1.top() == getMin())
            s2.pop();
        s1.pop();
    }
    int top()
    {
        return s1.top();
    }
    int getMin()
    {
        return s2.top();
    }
};
