#CF1461F. 数学表达式

数学表达式

数学表达式

  • 时间限制:1 秒
  • 内存限制:256 MiB

题目描述

给定 nn 个数字 a1,a2,…,ana_1,a_2,\ldots,a_n,你需要在每对相邻数字之间插入一个允许使用的运算符,使最终表达式的值最大。

允许的运算符由字符串 ss 给出。乘法的优先级高于加法与减法;加法和减法优先级相同,并从左到右计算。

输入格式

第一行一个整数 nn(1≤n≤1051\le n\le10^5)。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(0≤ai≤90\le a_i\le9)。

第三行一个字符串 ss(1≤∣s∣≤31\le |s|\le3)。字符串只包含 -、+、*,且字符互不相同。

输出格式

输出由原来的 nn 个数字和 n−1n-1 个允许运算符组成的表达式,使其值最大。若有多个最优答案,输出任意一个。

样例输入 1

3
2 2 0
+-*

样例输出 1

2*2-0

样例输入 2

4
2 1 1 2
+*

样例输出 2

2+1+1+2

数据范围

1≤n≤1051\le n\le10^5,0≤ai≤90\le a_i\le9,ss 是 -、+、* 的非空无重复子集。

子任务编号 分值 特殊限制
1 20 n≤9n\le9
2 40 n≤18n\le18
3 无特殊限制