HomeVolumesContestsSectionsForumsUsersPrintHelpAbout

Volumes > Vologda InterUni 2006 > problem:


G. Скобки

Volume problems

• A. Матрица
• B. 2-10
• C. Минусы
• E. Марсоход
• F. Сообщение
• G. Скобки
• H. Транслятор

Feedback

If you notice incorrect translations in Contester, please let author know.

Time limit 2000/4000/4000/4000 ms. Memory limit 65000/65000/65000/65000 Kb.
Автор: Павел Кузнецов, ПГУ.

Рассмотрим множество S, состоящее из N (1 ≤ N ≤ 10) начальных букв латинского алфавита. Введём на этом множестве бинарную операцию умножения при помощи таблицы, т.е. каждой упорядоченной паре элементов из S поставим в соответствие некоторый элемент из S. Например, пусть N = 2, тогда S = {a, b}. Возьмём таблицу

a b
a b
a
b b
b

Первая строка этой таблицы говорит о том, что a · a = b и a · b = a. Вторая строка означает, что b · a = b и b · b = b. Таким образом мы задали таблицу умножения для множества S. В дальнейшем мы будем опускать символ умножения и вместо a · b будем писать просто ab. Умножение, заданное произвольной таблицей, не обязано быть ни коммутативно: ab не обязано равняться ba, ни ассоциативно: a(bc) не обязано равняться (ab)c.

Дано число N - количество элементов множества, таблица умножения для этого множества, строка, состоящая из маленьких латинских букв-элементов множества, а также задан некий элемент множества. Ваша программа должна расставить в данной строке скобки так, чтобы порядок умножения определялся однозначно, и результатом умножения был заданный элемент.

Ввод
Первая строка ввода содержит целое число N (1 ≤ N ≤ 10). Вторая строка содержит исходную строку из элементов множества. Гарантируется, что она будет содержать только разрешённые строчные латинские буквы, и её длина не превзойдёт 100. В третьей строке задан символ-элемент множества, который нужно получить в результате умножения. Следующие N строк содержат по N символов каждая - это таблица умножения. Символы в строках заданы без пробелов.
Вывод
Если можно расставить скобки как требует того условие задачи, то в первой строке вывода выведите "YES", в противном случае - "NO" (большими буквами, без кавычек). В случае положительного ответа во второй строке выведите исходную строку с расставленными скобками. Скобки должны быть расставлены корректно, и длина ответа не должна превышать 500 символов. Если ответов несколько, выведите любой.

Ввод 1 Ввод 2
2
aabba
b
ba
bb
2
aabba
a
ba
bb
Вывод 1 Вывод 2
YES
(a(ab))(ba)
YES
(a((a(bb))a))

Для отправки решений необходимо выполнить вход.

www.contester.ru