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 自动生成**