CF550E Brackets in Implications
题目描述
蕴含是一个由两个逻辑参数构成的函数。当第一个参数为真而第二个参数为假时,其值为假。
在逻辑表达式中,蕴含运算符使用符号 "$\to$" 表示,参数和结果以 '0'(表示假)和 '1'(表示真)来表示。根据定义,蕴含运算具体如下:
- $0 \to 0 = 1$
- $0 \to 1 = 1$
- $1 \to 0 = 0$
- $1 \to 1 = 1$
在没有括号的逻辑表达式中,多个蕴含运算从左到右依次计算。例如:
$$0 \to 1 \to 0 = (0 \to 1) \to 0 = 1 \to 0 = 0.$$
如果使用括号,先计算括号内的内容。例如:
$$0 \to (1 \to 0) = 0 \to 0 = 1.$$
给定一个逻辑表达式 $a_1 \to a_2 \to \cdots \to a_n$,判断是否能够通过添加括号使表达式的结果为假。如果可以,请给出一种实现该效果的括号添加方式。
输入格式
第一行给出一个整数 $n$($1 \le n \le 100000$),表示逻辑表达式中的参数数量。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,表示表达式中每个参数的值(0 或 1),按照出现顺序给出。
输出格式
如果不可能通过添加括号使表达式的值为假,请输出 `NO`。
如果可以实现,在第一行输出 `YES`,第二行输出改造后的逻辑表达式,表达式中必须有适当的括号。
表达式仅可包含以下字符: '0','1','-'(ASCII代码45),'>'(ASCII代码62),'(' 和 ')'。 '-' 和 '>' 必须成对出现,形式为 "->" 来表示蕴含运算。表达式中逻辑参数的数量必须等于 $n$,且顺序必须与输入相符。
表达式是正确的。定义如下:
- "0" 和 "1" 是正确的表达式。
- 如果 $v_1$ 和 $v_2$ 是正确的,那么 $v_1 \to v_2$ 也是正确的。
- 如果 $v$ 是正确的,那么 $(v)$ 也是正确的。
最终输出的表达式总字符数不得超过 $10^6$。
如果有多种可能的答案,你可以输出任何一种。
**本翻译由 AI 自动生成**