class Solution {
public:
    int calPoints(vector<string>& ops) {
        stack<int> ST;
        int sum = 0;
        for (auto o : ops)
        {
            if (o == "C")
            {
                int n = ST.top();
                sum -= n;
                ST.pop();
            }
            else if (o == "D")
            {
                int n = ST.top() * 2;
                sum += n;
                ST.push(n);
            }
            else if (o == "+")
            {
                int t1 = ST.top();
                ST.pop();
                int t2 = ST.top();
                int n = t1 + t2;
                sum += n;
                ST.push(t1);
                ST.push(n);
            }
            else
            {
                int n = atoi(o.c_str());
                sum += n;
                ST.push(n);
            }
        }
        return sum;
    }
};