题目描述
定义一个算术表达式是有质量的,当且仅当这个算术表达式只由括号,数字,乘法符号和加法符号组成。
一个有质量的算术表达式由下列方式递归定义:
仅包含一个正实数小于等于 $Z_1$。这种表达形式如下:
$$(x)$$
例如当 $Z_1=5$,那么 $(4)$ 就是有质量的算术表达式。
如果 $A_1,A_2,\cdots,A_k(2\le k\le K)$ 都是有质量的算术表达式,并且这些有质量的算术表达式的和小于等于 $Z_k$,那么
$$(A_1+A_2+\cdots+A_k)$$
$$(A_1*A_2*\cdots*A_k)$$
也是有质量的算术表达式。
你会得到一条所有数字都被问号代替的算术表达式,求满足这个表达式是有质量的算术表达式的前提下,这个表达式可能的最大值。
输入格式
第一行包含一个正整数 $K$。
第二行包含 $K$ 个被空格隔开的正整数,表示 $Z_1,Z_2,\cdots,Z_K$。
第三行包含了一个所有数字被 ?
代替的算术质量表达式。这个表达式只包含 ?
,+
,*
,(
,)
。
输出格式
本题采用 Special Judge。
你需要输出这个表达式的最大值。
你的解被接受当且仅当你的输出和标准答案的绝对值 $\le 10^{-3}$。
样例 #1
样例输入 #1
2
10 6
((?)+(?))
样例输出 #1
6.00000
样例 #2
样例输入 #2
3
2 5 3
(((?)+(?))*(?))
样例输出 #2
6.00000
样例 #3
样例输入 #3
3
2 10 6
((?)*(?)*(?))
样例输出 #3
8.0000000
提示
样例 1 解释
表达式 $((3)+(3))$ 满足条件,因此它是一个算术表达式。容易证明,$6$ 是这个表达式的最大值。
样例 2 解释
对于表达式 $(((1)+(2))*(2))$ 可以达到最大值。
样例 3 解释
对于表达式 $((2)*(2)*(2))$ 可以得到最大值。
数据规模与约定
对于 $100\%$ 的数据,满足 $2\le K\le 50,1\le Z_i\le 50$,表达式的长度 $\le 10^6$。