#include #define rep(i,a,b) for(int i=int(a);i> S; deque cst; deque nst; bool flag = 0; int cnt = 0; for(char c:S){ if(c == '(')flag = 1; else if(c == ')'){ flag = 0; rep(i,0,cnt){ int a = nst.back(); nst.pop_back(); int b = nst.back(); nst.pop_back(); if(cst.back() == '+'){ nst.push_back(b + a); }else{ nst.push_back(b - a); } cst.pop_back(); } cnt = 0; }else if(c == '+' || c == '-'){ cst.push_back(c); if(flag)cnt++; }else{ nst.push_back(c - '0'); } } while(nst.size() > 1){ int a = nst.front(); nst.pop_front(); int b = nst.front(); nst.pop_front(); if(cst.front() == '+'){ nst.push_front(a + b); }else{ nst.push_front(a - b); } cst.pop_front(); } cout << nst.front() << endl; }