HomeVolumesContestsSectionsForumsUsersPrintHelpAbout

Volumes > Problems from everywhere > problem:


VologdaInterUni-G. 50639 - Brackets

Guest
• Discussion of problem (1)

Volume problems

• VologdaInterCity-D. 50605 - Behind...
• VologdaInterCity-E. 50624 - Simple ...
• VologdaInterUni-A. 50628 - Matrix
• VologdaInterUni-B. 50541 - Binary t...
• VologdaInterUni-C. 50629 - Minuses
• VologdaInterUni-D. 50610 - Feasibility
• VologdaInterUni-E. 50619 - The Mar...
• VologdaInterUni-F. 50638 - Message
• VologdaInterUni-G. 50639 - Bra...
• VologdaInterUni-H. 50648 - Translator

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.
Автор: Павел Кузнецов, ПГУ. Difficulty Delta

Рассмотрим множество 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