Областная олимпиада по информатике 2001/2002 г.

Тур II, Задача 2. "Разметка таблицы". 32 балла.

По описанию структуры таблицы Вам необходимо построить ее изображение.

В таблице некоторые прямоугольные группы ячеек могут быть объединены. Для каждой строки таблицы указывается список ячеек в этой строке и объединённых групп, начинающихся в этой строке (и продолжающихся, возможно, на следующие строки). Если ячейка входит в объединённую группу, отдельно она не указывается. Количество ячеек в строках может различаться. В этом случае строки с меньшим количеством ячеек дополняются пустыми ячейками. Для каждой ячейки (или объединённой группы) задаётся размер её содержимого. Вам необходимо так рассчитать размеры строк и столбцов таблицы, чтобы содержимое ячеек (и объединённых групп) входило, но уменьшить размеры было бы уже нельзя. (Из вариантов, в которых суммарный размер соседних ячеек одинаковый, необходимо выбрать тот, когда минимален размер первых из соседних ячеек, то есть верхних строк и левых столбцов). Таблица задана корректно (то есть объединённые области не перекрываются и не выходят за пределы таблицы).

Ограничения: количество строк и столбцов таблицы, а также размеры содержимого ячеек таблицы - целые числа от 1 до 100.

В первой строке входного файла INPUT.TXT указано количество строк таблицы - N, далее для каждой строки таблицы идут следующие последовательности строк. Первая из строк в этих последовательностях содержит количество ячеек и объединённых групп, задаваемых в этой строке Mi. Последующие Mi строк имеют вид c k l n m, где c - символ, которым требуется заполнить содержимое ячейки, k - размер содержимого ячейки по горизонтали, l - размер содержимого ячейки по вертикали, n - количество ячеек в группе по горизонтали, m - количество ячеек в группе по вертикали. Для отдельных ячеек числа n m равны 1. Элементы в этих строках отделены друг от друга пробелами.

Программа должна записать в выходной файл OUTPUT.TXT изображение таблицы. Содержимое ячеек (размером k на l) изображается прямоугольником, заполненным символами c из k символов по горизонтали и l - по вертикали. Пустые ячейки и незаполненные содержимым части ячеек изображаются символом *
Пример INPUT.TXT:OUTPUT.TXT для примера:
3
2
a 1 3 1 3
b 2 2 1 1
1
c 3 1 1 1
1
d 1 1 1 1
abb*
abb*
accc
*d**

Ограничение времени: 4 сек на тест

Решение на языке Паскаль