现在有一个表达式,它里面有很多未知数的形式,小Z看到未知数就头疼,请你把数据匹配到相应的未知数的位置,输出其中缀表达式!
现在为了让电脑能够正常计算,请你也输出其前缀表达式的形式!
表达式只有'+,-,*,/'这四种。
**前缀表达式的递归定义**:
单个数的表达式,其前缀就是它自身;
若 E=(A\ op\ B),则 E 的前缀为 op 接上 A 的前缀、再接上 B 的前缀;
括号本身不产生记符;输出时相邻记符之间用一个空格隔开。
例如 (1+2)*(3-4) 的前缀是 `* + 1 2 - 3 4`,1+2*(3-4) 的前缀是 `+ 1 * 2 - 3 4`。
第一行一个字符串 s,表示表达式,仅由小写字母 `x`、数字、`+`、`-`、`*`、`/`、`(`、`)` 组成,不含空格。
第二行一个正整数 n,表示数值的个数。
第三行 n 个正整数,第 i 个数为未知数 x_i 的值。
数据保证:s 中出现的未知数下标均在 1\sim n 之间,且 x_1,x_2,\dots,x_n **每个恰好出现一次**(出现顺序随机、互不重复);s 是一个合法的表达式。
第一行一个字符串:代值后的中缀表达式。
第二行一个字符串:该表达式的前缀表达式,相邻记符之间恰好一个空格,行末无多余空格。
x1+x2*(x3-x4) 4 1 2 3 4
1+2*(3-4) + 1 * 2 - 3 4
把 x_1,x_2,x_3,x_4 依次替换为 1,2,3,4,中缀形式连同原有的括号原样输出。整个表达式是 (1+2*(3-4)) 的省略外层括号写法,加法在最外层且结合 1 与 2*(3-4),故前缀以 `+` 开头;2*(3-4) 的前缀为 `* 2 - 3 4`,拼接并按空格分隔记符后得到 `+ 1 * 2 - 3 4`。
对于全部数据,保证 1 \le n \le 10^5,|s| \le 10^6,未知数的取值不超过 10^9。
| 20% | 1~5 | 20 | n \le 20 |
| 60% | 6~15 | 40(累计 60) | n \le 1000 |
| 100% | 16~25 | 40(累计 100) | n \le 10^5 |
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |