Студенческие олимпиады по программированию 2003 года. Ускова О.Ф - 26 стр.

UptoLike

Составители: 

26
1 1 +
2 2 +
1 2 +
2 2 -
0
Пример выходных данных
Игрок 2 выиграл. Ход 3
Ничья
Задача 4 "Синхронизация часов"
Рассматривается группа состоящая из С (1<=C<=11) штук часов. Все они имеют
лишь часовую стрелку , которая может показывать только следующее время: 3 часа, 6, 9
и 12 часов. Существует B (0<=B<=11) различных команд для перевода часов. Действие
каждой команды состоит в переводе некоторой подгруппы часов на 3 часа вперед .
Требуется найти наименьшую последовательность команд , в результате применения
которых все часы будут показывать 12 часов.
Например , рассмотрим группу состоящую из 5 часов. Опишем 2 команды для перевода
часов при помощи следующей таблицы
***
Если применить последовательно нулевую и первую команды, то все часы будут
показывать 12 часов.
Входные данные
В первой строке входного файла input.txt содержатся два целых числа C и B,
разделенных пробелами. С - это количество часов (1<=С <=11), а B количество
команд . Все нумерации начинаются с нуля.
Вторая строка описывает начальные позиции часов. Эта строка состоит из С целых
чисел разделенных пробелами, которые принимают значения {3,6,9 или 12}.
Оставшиеся строки (их B штук) описывают команды. В каждой из этих строк
содержаться номера часов, которые переводятся на 3 часа вперед данной командой.
Выходные данные
В выходной файл output.txt должны быть помещены номера команд через пробел,
которые необходимо последовательно применить, чтобы выставить все часы на 12
часов. Если последовательность команд отыскать невозможно , то следует выдать
"Решения нет". Если все часы изначально показывают 12 часов, то нужно выдать
"Перевод часов не требуется". В случае, когда решений несколько , необходимо вывести
первое решение в алфавитном порядке . Например , если требуемый перевод часов
достигается на последовательностях команд 0 2 1 и 0 1 2, то в выходном файле должно
содержаться последнее.
Пример входных данных
5 2
9 9 12 6 6
0 1 3 4
3 4