#include #define rep(i,a,b) for(int i=int(a);i> S; deque cst,cst2; deque nst,nst2; 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 = nst2.front(); nst2.pop_front(); int b = nst2.front(); nst2.pop_front(); if(cst2.front() == '+'){ nst2.push_front(a + b); }else{ nst2.push_front(a - b); } cst2.pop_front(); } nst.push_back( nst2.back() ); nst2.pop_back(); cnt = 0; }else if(c == '+' || c == '-'){ if(flag){ cst2.push_back(c); cnt++; }else{ cst.push_back(c); } }else{ if(!flag)nst.push_back(c - '0'); else nst2.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; }