#icpc2013summerday3g. [icpc2013summer_day3_g]Unordered Operators
[icpc2013summer_day3_g]Unordered Operators
无序操作符
Ikuta,一个小学生,在某一天从他的爷爷那里得到了一张写着数学表达式的纸。看起来他的爷爷会根据表达式的答案给他相应的零花钱。由于Ikuta只学过加减乘法,所以这个数学表达式只包含了这三种运算符。在一般计算中,需要先计算乘法,然后再计算加减法,但是由于Ikuta对运算符的优先级理解模糊,所以他决定考虑一种便于计算结果最大化的优先级排列方式。
给出包含三个运算符和括号的表达式,任意更改三个运算符的优先级,求得表达式的最大值。
请注意以下几点:
- 运算符必须是从左到右结合的。(相同优先级的运算符必须从表达式的左侧开始计算。)
- 不同的运算符可以具有相同的优先级。
- 在计算一个表达式的过程中不能更改优先级。
输入
输入以以下格式给出。
由0~9数字和运算符'+','-','*'、括号'(',')'构成的数学表达式。
- 具体而言,输入的格式如下所示:
::= ( ) | |
::= + | - | *
表示非负整数。
约束条件
输入满足以下约束条件:
- 数学表达式长度不超过200个字符。
- 不管如何设置优先级,计算结果或其过程中都不会导致64位整数类型的溢出。
输出
以一行输出从表达式得到的最大值。
示例输入1
3-2*3
示例输入1的输出
3
- 将乘法运算符的优先级设为低于减法运算符即可得到结果。
示例输入2
(5-3*4)*(0-2+1)
示例输入2的输出
21
- 优先级顺序为+ > * > -
示例输入3
1-2+3-4+5-6*0
示例输入3的输出
3
- 常规优先级顺序。
示例输入4
(1989967-3*1-211+4487)
示例输入4的输出
8511076028