class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param op string字符串vector 
     * @param vals int整型vector<vector<>> 
     * @return int整型vector
     */
    vector<int> max_weight_cow(vector<string>& op, vector<vector<int>>& vals)
    {
        // write code here
        stack<int> st;
        vector<int> ret, v;
        for (int i = 0; i < op.size(); ++i)
        {
            if (op[i] == "MaxCowStack")
            {
                ret.push_back(-1);
            }
            else if(op[i] == "push")
            {
                st.push(vals[i][1]);
                v.push_back(vals[i][1]);
                ret.push_back(-1);
            }
            else if (op[i] == "getMax")
            {
                if (v.empty())
                    ret.push_back(-1);
                else  
                {
                    sort(v.begin(), v.end());
                    ret.push_back(v[v.size() - 1]);
                }
            }
            else if (op[i] == "pop")
            {
                int t = st.top();
                st.pop();
                for (auto& x : v)
                    if (x == t)
                        x = -1;
                ret.push_back(-1);
            }
            else if(op[i] == "top")
            {
                if (st.empty())
                    ret.push_back(-1);
                else  
                    ret.push_back(st.top());
            }
        }
        return ret;
    }
};