UOJ Logo 蜗牛编程训练题库

JZOJ

#436. 添加括号

统计
时间限制:1s    空间限制:256MB    输入文件:input.in    输出文件:output.out
当前24小时内您还剩30次提交本题的机会

题目描述

给定一个正整数序列$a(1),a(2),...,a(n)$,$(1<=n<=20)$

不改变序列中每个元素在序列中的位置,把它们相加,并用括号记每次加法所得的和,称为中间和。

例如:

给出序列是$4,1,2,3$。

第一种添括号方法:

$((4+1)+(2+3))=((5)+(5))=(10)$

有三个中间和是$5$,$5$,$10$,它们之和为:$5+5+10=20$

第二种添括号方法

$(4+((1+2)+3))=(4+((3)+3))=(4+(6))=(10)$

中间和是$3$,$6$,$10$,它们之和为$19$。

现在要添上$n-1$对括号,加法运算依括号顺序进行,得到$n-1$个中间和,求出使中间和之和最小的添括号方法。

输入格式

共两行。

第一行,为整数$n$。$(1<=n<=20)$

第二行,为$a(1),a(2),...,a(n)$这$n$个正整数,每个数字不超过$100$。

输出格式

输出$3$行。

第一行,为添加括号的方法。

第二行,为最终的中间和之和。

第三行,为$n-1$个中间和,按照从里到外,从左到右的顺序输出。

样例数据

input

4
4 1 2 3

output

(4+((1+2)+3))
19
3 6 10

方案等效时,以括弧靠左为优先~

数据规模与约定

时间限制:$1 text {s}$

空间限制:$256 text {MB}$

解题讨论区

标题 发表者 发表日期