HomeVolumesContestsSectionsForumsUsersPrintHelpAbout

Sections > Unsorted > problem:


50639 - Brackets

Guest
• Discussion of problem (1)

Section problems

• 50626 - The route
• 50627 - Area of a polygon
• 50628 - Matrix
• 50629 - Minuses
• 50630 - Radio Station
• 50631 - Robots
• 50632 - Again numbers game
• 50638 - Message
• 50639 - Brackets
• 50642 - Draft board
• 50643 - Stepeny couples
• 50644 - Capital
• 50645 - Line
• 50646 - The more the better
• 50648 - Translator
• 51153 - A+B.
• Problem 1

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