#include <iostream> #include <stdlib.h> #include <string> #include <algorithm> #include <stack> #include <functional> using namespace std; char s[100100]; int out=0; stack<int>lt,rt; int len; int digit(string a) { int step=1; int sum=0; for(int i=0;i<a.size();i++) { sum+=(a[i]-'0')*step; step*=10; } return sum; } void pushin() { stack<int>llt,rrt; len=strlen(s); int l=0,r=len-1; int tmpi=0; while(tmpi<len) { if(s[tmpi]=='(') l=tmpi; tmpi++; } while(l>=0) { if(s[l]=='(') { llt.push(l); s[l]='$'; r=l+1; } else break; while(s[r]!=')') r++; s[r]='#'; rrt.push(r); while(l>=0&&s[l]!='(') l--; } //把左右括号入栈 while(!llt.empty()) { lt.push(llt.top()); rt.push(rrt.top()); llt.pop(); rrt.pop(); } } int scan() { string q; int sum=0; for(int i=len-1;i>=0;i--) { if(s[i]>='0'&&s[i]<='9') q+=s[i]; else if(s[i]=='+') { sum+=digit(q); q.clear(); } else if(s[i]=='-') { sum-=digit(q); q.clear(); } else if(q.size()!=0) { sum+=digit(q); q.clear(); } } if(q.size()!=0) sum+=digit(q); return sum; } int main() { while(gets(s)) { out=0; int len=strlen(s); pushin(); int sum=0; string aa; /* if(lt.size()==0) { for(int i=len-1;i>=1;i--) { aa+=s[i]; s[i]=0; } if(s[0]>='0'&&s[0]<='9') { aa+=s[0]; sum+=digit(aa); } else sum-=digit(aa); s[0]=0; }*/ string tt; int l,r; while(!lt.empty()) { l=lt.top(); r=rt.top(); lt.pop(); rt.pop(); bool fuhao=false; for(int i=r-1;i>l;i--) { if(s[i]=='+') { sum+=digit(tt); tt.clear(); } else if(s[i]=='-') { sum-=digit(tt); tt.clear(); } else if(s[i]>='0'&&s[i]<='9') tt+=s[i]; s[i]=0; } sum+=digit(tt); tt.clear(); if(l>0) if(s[l-1]=='-') { sum*=-1; s[l]='&'; s[l-1]='^'; } s[r]=0; s[l]=0; } sum+=scan(); cout<<sum<<endl; } }