class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 返回表达式的值
     * @param s string字符串 待计算的表达式
     * @return int整型
     */
    vector<int> function(string s,int in)
    {
        stack<int> st;
        int num=0;
        char op='+';
        int i;
        for(i=in;i<s.size();i++)
        {
            if(s[i]>='0'&&s[i]<='9')
            {
                num=num*10+s[i]-'0';
                if(i!=s.size()-1)continue;
            }
            if(s[i]=='(')
            {
                vector<int> New=function(s,i+1);
                num=New[0];
                i=New[1];
                if(i!=s.size()-1)continue;
            }
            switch(op)
            {
                case '+':
                {
                    st.push(num);
                    break;
                }
                case '-':
                {
                    st.push(-num);
                    break;
                }
                case '*':
                {
                    int x=st.top();
                    st.pop();
                    st.push(x*num);
                    break;
                }
            }
            num=0;
            if(s[i]==')')break;
            else op=s[i];
        }
        int sum=0;
        while(!st.empty())
        {
            sum+=st.top();
            st.pop();
        }
        return vector<int> {sum,i};
    }
    int solve(string s) {
        return function(s,0)[0];
    }
};