#include<bits/stdc++.h>
//Evaluating infix expression without converting it into postfix in a single scan
int isoperand(char x)
{
if(x == '+' || x=='-'|| x=='*' || x=='/' || x==')' || x=='(')
return 0;
return 1;
}
int Pre(char x)
{
if(x == '+' || x == '-')
return 1;
if(x == '*' || x == '/')
return 3;
return 0;
}
int postfixevaluation(std::string exp)
{
std::stack<int> operandStack;
std::stack<char> operatorStack;
int i,x,y,z,operand;
i=0;
while(exp[i]!='\0')
{
if(exp[i]==' ' || exp[i]==',')
{
i++;
continue;
}
if(isoperand(exp[i]))
{
operand = 0;
while(i<exp.length() && isoperand(exp[i]))
operand = operand*10 + (exp[i++]-'0');
operandStack.push(operand);
}
else if(!isoperand(exp[i]) && operatorStack.empty())
operatorStack.push(exp[i++]);
else if(!isoperand(exp[i]) && !operatorStack.empty())
{
if(exp[i]=='(')
operatorStack.push(exp[i++]);
else if(Pre(exp[i])>Pre(operatorStack.top()) && exp[i]!=')')
operatorStack.push(exp[i++]);
else if(exp[i]==')' && operatorStack.top() == '(')
{
operatorStack.pop();
i++;
}
else
{
x = operandStack.top();
operandStack.pop();
y = operatorStack.top();
operatorStack.pop();
z = operandStack.top();
operandStack.pop();
if(y == '+')
operandStack.push(z+x);
else if(y == '-')
operandStack.push(z-x);
else if(y == '*')
operandStack.push(x*z);
else if(y == '/')
operandStack.push(z/x);
}
}
}
while(!operatorStack.empty())
{
x = operandStack.top();
operandStack.pop();
y = operatorStack.top();
operatorStack.pop();
z = operandStack.top();
operandStack.pop();
if(y == '+')
operandStack.push(x+z);
else if(y == '-')
operandStack.push(z-x);
else if(y == '*')
operandStack.push(x*z);
else if(y == '/')
operandStack.push(z/x);
}
return operandStack.top();
}
int main(int argc, char const *argv[])
{
std::string s;
getline(std::cin,s);
std::cout<<postfixevaluation(s)<<std::endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCi8vRXZhbHVhdGluZyBpbmZpeCBleHByZXNzaW9uIHdpdGhvdXQgY29udmVydGluZyBpdCBpbnRvIHBvc3RmaXggaW4gYSBzaW5nbGUgc2NhbgoKaW50IGlzb3BlcmFuZChjaGFyIHgpCnsKCWlmKHggPT0gJysnIHx8IHg9PSctJ3x8IHg9PScqJyB8fCB4PT0nLycgfHwgeD09JyknIHx8IHg9PScoJykKCQlyZXR1cm4gMDsKCXJldHVybiAxOwp9CgppbnQgUHJlKGNoYXIgeCkKewoJaWYoeCA9PSAnKycgfHwgeCA9PSAnLScpCgkJcmV0dXJuIDE7CglpZih4ID09ICcqJyB8fCB4ID09ICcvJykKCQlyZXR1cm4gMzsKCXJldHVybiAwOwp9CgppbnQgcG9zdGZpeGV2YWx1YXRpb24oc3RkOjpzdHJpbmcgZXhwKQp7CglzdGQ6OnN0YWNrPGludD4gb3BlcmFuZFN0YWNrOwoJc3RkOjpzdGFjazxjaGFyPiBvcGVyYXRvclN0YWNrOwoJaW50IGkseCx5LHosb3BlcmFuZDsKCWk9MDsKCXdoaWxlKGV4cFtpXSE9J1wwJykKCXsKCQlpZihleHBbaV09PScgJyB8fCBleHBbaV09PScsJykKCQl7CgkJCWkrKzsKCQkJY29udGludWU7CgkJfQoJCQoJCWlmKGlzb3BlcmFuZChleHBbaV0pKQoJCXsKCQkJb3BlcmFuZCA9IDA7CgkJCXdoaWxlKGk8ZXhwLmxlbmd0aCgpICYmIGlzb3BlcmFuZChleHBbaV0pKQoJCQkJb3BlcmFuZCA9IG9wZXJhbmQqMTAgKyAoZXhwW2krK10tJzAnKTsKCQkJb3BlcmFuZFN0YWNrLnB1c2gob3BlcmFuZCk7CgkJCQoJCX0KCQllbHNlIGlmKCFpc29wZXJhbmQoZXhwW2ldKSAmJiBvcGVyYXRvclN0YWNrLmVtcHR5KCkpCgkJCW9wZXJhdG9yU3RhY2sucHVzaChleHBbaSsrXSk7CgkJZWxzZSBpZighaXNvcGVyYW5kKGV4cFtpXSkgJiYgIW9wZXJhdG9yU3RhY2suZW1wdHkoKSkKCQl7CgkJCWlmKGV4cFtpXT09JygnKQoJCQkJb3BlcmF0b3JTdGFjay5wdXNoKGV4cFtpKytdKTsKCQkJZWxzZSBpZihQcmUoZXhwW2ldKT5QcmUob3BlcmF0b3JTdGFjay50b3AoKSkgJiYgZXhwW2ldIT0nKScpCgkJCQlvcGVyYXRvclN0YWNrLnB1c2goZXhwW2krK10pOwoJCQllbHNlIGlmKGV4cFtpXT09JyknICYmIG9wZXJhdG9yU3RhY2sudG9wKCkgPT0gJygnKQoJCQl7CgkJCQlvcGVyYXRvclN0YWNrLnBvcCgpOwoJCQkJaSsrOwoJCQl9CgkJCQoJCQllbHNlCgkJCXsKCQkJCXggPSBvcGVyYW5kU3RhY2sudG9wKCk7CgkJCQlvcGVyYW5kU3RhY2sucG9wKCk7CgkJCQl5ID0gb3BlcmF0b3JTdGFjay50b3AoKTsKCQkJCW9wZXJhdG9yU3RhY2sucG9wKCk7CgkJCQl6ID0gb3BlcmFuZFN0YWNrLnRvcCgpOwoJCQkJb3BlcmFuZFN0YWNrLnBvcCgpOwoJCQkJaWYoeSA9PSAnKycpCgkJCQkJb3BlcmFuZFN0YWNrLnB1c2goeit4KTsKCQkJCWVsc2UgaWYoeSA9PSAnLScpCgkJCQkJb3BlcmFuZFN0YWNrLnB1c2goei14KTsKCQkJCWVsc2UgaWYoeSA9PSAnKicpCgkJCQkJb3BlcmFuZFN0YWNrLnB1c2goeCp6KTsKCQkJCWVsc2UgaWYoeSA9PSAnLycpCgkJCQkJb3BlcmFuZFN0YWNrLnB1c2goei94KTsKCQkJfSAKCQl9Cgl9Cgl3aGlsZSghb3BlcmF0b3JTdGFjay5lbXB0eSgpKQoJewoJCXggPSBvcGVyYW5kU3RhY2sudG9wKCk7CgkJb3BlcmFuZFN0YWNrLnBvcCgpOwoJCXkgPSBvcGVyYXRvclN0YWNrLnRvcCgpOwoJCW9wZXJhdG9yU3RhY2sucG9wKCk7CgkJeiA9IG9wZXJhbmRTdGFjay50b3AoKTsKCQlvcGVyYW5kU3RhY2sucG9wKCk7CgkJaWYoeSA9PSAnKycpCgkJCW9wZXJhbmRTdGFjay5wdXNoKHgreik7CgkJZWxzZSBpZih5ID09ICctJykKCQkJb3BlcmFuZFN0YWNrLnB1c2goei14KTsKCQllbHNlIGlmKHkgPT0gJyonKQoJCQlvcGVyYW5kU3RhY2sucHVzaCh4KnopOwoJCWVsc2UgaWYoeSA9PSAnLycpCgkJCW9wZXJhbmRTdGFjay5wdXNoKHoveCk7Cgl9CglyZXR1cm4gb3BlcmFuZFN0YWNrLnRvcCgpOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKQp7CglzdGQ6OnN0cmluZyBzOwoJZ2V0bGluZShzdGQ6OmNpbixzKTsKCXN0ZDo6Y291dDw8cG9zdGZpeGV2YWx1YXRpb24ocyk8PHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9Cg==