class Solution {
public:
    /*
    最小栈:
    sta1,sta2
    push:正常向sta1中push,如果数小于min的栈顶,sta2push val
    pop:获取sta1的top,如果等于sta2,sta1和sta2一起pop,否则
    top:获取sta1,
    min:获取sta2
    */
    stack<int> sta1, sta2;
    void push(int value) {
        sta1.push(value);
        if (sta2.empty() || sta2.top() >= value) {
            sta2.push(value);
        }
        
    }
    void pop() {
        int top = sta1.top();
        sta1.pop();
        if (top == sta2.top()) {
            sta2.pop();
        }
    }
    int top() {
        return sta1.top();
        
    }
    int min() {
        return sta2.top();
    }
};