Шаг 71.
Алгоритмы.
Олимпиадная задача "Кубики"

    На этом шаге рассмотрим решение еще одной олимпиадной задачи.

    Родители подарили Пете набор детских кубиков. Поскольку Петя скоро пойдет в школу, они купили ему кубики с буквами. На каждой из шести граней каждого кубика написана буква.

    Теперь Петя хочет похвастаться перед старшей сестрой, что научился читать. Для этого он хочет сложить из кубиков ее имя. Но это оказалось довольно сложно сделать — ведь разные буквы могут находиться на одном и том же кубике, и тогда Петя не сможет использовать обе буквы в слове. Правда, одна и та же буква может встречаться на разных кубиках. Помогите Пете!

    Дан набор кубиков и имя сестры. Выясните, можно ли выложить ее имя с помощью этих кубиков, и если да, то в каком порядке следует выложить кубики.

    Ввод:

    В первой строке входного файла находится число N (1 ≤ N ≤ 100) — количество кубиков в наборе у Пети.

    Во второй строке записано имя Петиной сестры — слово, состоящее только из больших латинских букв, не длиннее 100 символов. Следующие N строк содержат по 6 букв (только большие латинские буквы), которые написаны на соответствующем кубике.

    Вывод:

    В первой строке выходного файла выведите YES, если выложить имя Петиной сестры данными кубиками можно, и N0 — в противном случае.

    Если ответ YES, то во второй строке выведите М различных чисел из диапазона 1..N, где М — количество букв в имени Петиной сестры, i-e число должно быть номером кубика, который следует положить на i-e место при составлении имени Петиной сестры. Кубики нумеруются с 1, в том порядке, в котором они заданы во входном файле. Если решений несколько, выведите любое. Разделяйте числа пробелами.

Пример ввода Пример вывода
4
ANN
ANNNNN
BCDEFG
HIJKLM
NOPQRS
N0
5
HELEN
ABCDEF
GHIJKL
MNOPQL
STUVWN
EIUOZK
YES
2 1 3 5 4

    На следующем шаге рассмотрим решение поставленной задачи.




Предыдущий шаг Содержание Следующий шаг