#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