6700 {
6701 stack<int> nums;
6702 stack<char> ops;
6703 char ch;
6704 int num;
6705 while((ch = cin.peek()) > 0) {
6706 if(isdigit(ch) != 0) {
6707 cin >> num;
6708 if(!ops.empty() && ops.top() == '*') {
6709 num = nums.top() * num;
6710 nums.pop();
6711 nums.push(num);
6712 ops.pop();
6713 } else if(!ops.empty() && ops.top() == '/') {
6714 num = nums.top() / num;
6715 nums.pop();
6716 nums.push(num);
6717 ops.pop();
6718 } else {
6719 nums.push(num);
6720 }
6721 } else {
6722 cin >> ch;
6723 if(ch == ')') {
6724 vector<char> vec_op;
6725 vector<int> vec_num;
6726 vec_num.push_back(nums.top());
6727 nums.pop();
6728 while(ops.top() != '(') {
6729 vec_op.push_back(ops.top());
6730 vec_num.push_back(nums.top());
6731 ops.pop();
6732 nums.pop();
6733 }
6734 ops.pop();
6735 for(int i = vec_op.size() - 1; i >= 0; --i) {
6736 if(vec_op[i] == '+') {
6737 vec_num.back() += vec_num[i];
6738 } else if(vec_op[i] == '-') {
6739 vec_num.back() -= vec_num[i];
6740 } else {
6741 return 1;
6742 }
6743 }
6744 num = vec_num.back();
6745 if(!ops.empty() && ops.top() == '*') {
6746 num = nums.top() * num;
6747 nums.pop();
6748 nums.push(num);
6749 ops.pop();
6750 } else if(!ops.empty() && ops.top() == '/') {
6751 num = nums.top() / num;
6752 nums.pop();
6753 nums.push(num);
6754 ops.pop();
6755 } else {
6756 nums.push(num);
6757 }
6758 } else {
6759 ops.push(ch);
6760 }
6761 }
6762 }
6763 vector<char> vec_op;
6764 vector<int> vec_num;
6765 vec_num.push_back(nums.top());
6766 nums.pop();
6767 while(!ops.empty()) {
6768 vec_op.push_back(ops.top());
6769 vec_num.push_back(nums.top());
6770 ops.pop();
6771 nums.pop();
6772 }
6773 for(int i = vec_op.size() - 1; i >= 0; --i) {
6774 if(vec_op[i] == '+') {
6775 vec_num.back() += vec_num[i];
6776 } else if(vec_op[i] == '-') {
6777 vec_num.back() -= vec_num[i];
6778 } else {
6779 return 1;
6780 }
6781 }
6782 cout << vec_num.back();
6783 return 0;
6784 }