В процедурном кабинете N кушеток. Каждый из M пациентов должен принять на каждой кушетке процедуру. Некоторые пациенты могут иметь некоторое (одно и то же) кожное заболевание (кто именно - неизвестно, но их не более К). Некоторые из N кушеток являются источником этого заболевания (таковых наверняка не больше L). При соприкосновении с такой кушеткой пациент заражается.
Заболевание передается не только при непосредственном контакте с больным, но и при контакте с зараженными поверхностями предметов, которые становятся таковыми при соприкосновении с зараженными поверхностями других предметов.
Необходимо исключить инфицирование здоровых пациентов и увеличение количества зараженных кушеток после принятия процедур.
Для решения проблемы можно использовать стерильные простынки, поскольку сквозь ткань данная инфекция не передается. Из-за дефицитности простынок требуется определить алгоритм их перестилания на кушетках, обеспечивающий выполнение указанных требований при минимально возможном расходе простынок. Разрешается стелить на кушетку друг на друга не более Р простынок.
Компьютерная программа должна:
<Процесс>::=<Процедура>,<Процедура>, ...
<Процедура>::=<Номер пациента> /<Простынка> /<Простынка> /.../ <Номер кушетки>
<Простынка>::=<Номер простынки><Ориентация простынки>
Здесь <Ориентация простынки> - "a", если простынка лежит лицевой стороной вверх, и "b"- в противном случае.
Пример. При M=1, N=З, K=0,
L=1, P=2 программа должна выдавать минимальное
количество "2" и, например, последовательность
1/1а/1, 1/2а/2, 1/2а/1b/З
.
Максимальная оценка за задачу - 50 баллов.
Комнату размером N×M единиц требуется покрыть одинаковыми плитками паркета размером 2×1 единиц без пропусков и наложений (M ≤ 20, N ≤ 8, M, N - целые). Пол можно покрыть паркетом различными способами. Например, для М=2, N=З все возможные способы укладки приведены на рисунке:
Требуется определить количество всех возможнмх способов укладки паркета для конкретных значений M ≤ 20, N ≤ 8. Решением задачи является таблица, содержащая 20 строк и 8 столбцов.
Элементом таблицы является число, являющееся решением задачи для соответствующих M и N. На месте не найденных результатов должен стоять символ "*".
Ниже приведен пример требуемой таблицы:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
1 | 0 | 1 | 0 | * | * | * | * | * |
2 | 1 | 2 | 3 | * | * | * | * | * |
... | ... | ... | ... | ... | ... | ... | ... | ... |
20 | * | * | * | * | * | * | * | * |
Таблица должна быть выровнена по столбцам и помещена в текстовый (АSCII) файл с
именем имя.RЕS
, который обязательно сдается вместе с
остальными файлами данного тура.
Результат решения задачи будет оцениваться по содержимому файла имя.RES
.
Максимальная оценка за задачу - 50 баллов.
Чем больше правильно заполненных элементов таблицы, тем выше результат.
Во входном файле содержится закодированное изображение электронного табло, состоящего из 25 строк и 80 столбцов лампочек. Известно, что на табло высвечивалась одна или несколько заглавных печатных букв: А, В, Ж, Л, М, О, С, Ф, Ю. Символы, отличные от перечисленных букв, на табло отсутствовали.
Две горящие лампочки, соседствующие на табло по горизонтали, вертикали или диагонали, принадлежат одной и той же букве. Буквы могут быть любого размера, толщины, начертания ("рукописные" буквы не допустимы). Буквы расположены вертикально. Изображения букв не касаются и не пересекаются. "Линии", образующие буквы, не имеют разрывов и полостей.
Написать программу, которая
Непрерывный ряд горящих лампочек одной строки, слева и справа от которого нет горящих лампочек, назовем серией. Каждая серия определяетея тремя числами: номером строки, номером столбца, в котором начинается серия, и количеством лампочек в серии. Изображение, находившееся на табло, было записано в текстовый файл путем описания множества всех его серий.
Первое число в файле - общее количество серий. Далее следуют тройки чисел, задающие серии. Числа в файле разделены пробелами или концами строк. Сначала в файле описаны все серии первой строки табло слева направо, затем второй, третьей и т.д. строк.
После каждого нажатия клавиши "пробел" в изображении одной из букв, выведенных на экран, символы "*" следует заменить на символ, соответствующий этой букве, например, "А" для буквы А или "Ю" для Ю, до тех пор пока все буквы на экране не будут разпознаны. В случае неоднозначного распознавания буквы вашей программой допустимо после нажатия клавиши "пробел" заменить символы "*" в изображении этой буквы на два или даже три символа (например, на "О", "А" и "Л"), распределяя их по изображению буквы.
Если вашей программе не удалось распознать ту или иную букву, то символы "*" в ее изображении следует заменить на символ "?".
Всего 100 баллов