Олимпиадный тренинг

Задача . E. Скобки в импликациях


Напомним, что импликация — это функция от двух логических аргументов, значение которой ложно тогда и только тогда, когда значение первого аргумента истинно, а второго аргумента ложно.

Для записи импликации используется символ '', а аргументы и результат импликации обозначаются '0' (ложное значение, false) и '1' (истинное значение, true). По определению импликации:

Когда логическое выражение содержит несколько импликаций, то при отсутствии скобок оно будет вычисляться слева направо. Например,

.

При наличии скобок сперва вычисляется выражение в скобках. Например,

.

Для заданного логического выражения определите, можно ли расставить в нем скобки так, чтобы значение логического выражения было ложно. Если это возможно, требуется найти такую расстановку скобок.

Входные данные

Первая строка содержит целое число n (1 ≤ n ≤ 100000) — количество аргументов в логическом выражении.

Вторая строка содержит n чисел a1, a2, ..., an (), обозначающих значения аргументов в выражении в порядке следования.

Выходные данные

Выведите "NO" (без кавычек), если расставить в выражении скобки так, чтобы его значение равнялось 0, невозможно.

Иначе выведите "YES" в первой строке и логическое выражение с нужной расстановкой скобок во второй строке.

Выражение должно содержать только символы '0', '1', '-' (символ с ASCII кодом 45), '>' (символ с ASCII кодом 62), '(' и ')'. Символы '-' и '>' могут встречаться в выражении только в паре ("->") и обозначают импликацию. Суммарное количество логических аргументов (т. е. цифр '0' и '1') в выражении должно равняться n. Порядок следования цифр в выражении слева направо должен совпадать с a1, a2, ..., an.

Выражение должно быть правильным. Более формально, правильное выражение определяется следующим образом:

  • Выражения "0", "1" (без кавычек) — правильные.
  • Если v1, v2 — правильные выражения, то v1->v2 — правильное выражение.
  • Если v — правильное выражение, то (v) — правильное выражение.

Общее количество символов в полученном выражении не должно превысить 106.

Если возможных ответов несколько, разрешается вывести любой.


Примеры
Входные данныеВыходные данные
1 4
0 1 1 0
YES
(((0)->1)->(1->0))
2 2
1 1
NO
3 1
0
YES
0

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя