Изображение таблицы
Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
При разработке программ для просмотра веб-страниц одной из наиболее
сложных задач является корректное отображение таблиц. Компания
"Kozilla", в которой вы работаете, планирует разработать
новую версию браузера "Waterrat" для работы в терминальном
режиме, и просит вас написать фрагмент ядра отображения веб-страниц,
ответственный за формирование структуры таблиц.
Фрагмент, который вы должны написать, получает на вход информацию о
количестве строк таблицы и ячейках этих строк и должен сгенерировать
структуру таблицы и передать ее модулю, который занимается отображением
таблицы на экране.
Таблица состоит из строк, каждая строка состоит из одной
или нескольких ячеек, `j`-я ячейка `i`-й строки имеет ширину
`a_{i,j}`.
По заданным параметрам таблицы постройте символическое изображение
ее структуры.
Ввод
Первая строка входного файла содержит `n` — количество строк в таблице
(`1\ ≤\ n\ ≤\ 100`). Следующие `n` строк входного файла содержат описание строк таблицы.
Описание каждой строки включает число `m_i` — количество ячеек
этой строки, и `m_i` целых чисел `a_{i,1},\ a_{i,2},\ …,\ a_{i,m_i}` — ширину каждой
из ячеек строки (`1\ ≤\ m_i\ ≤\ 10`, `1\ ≤\ a_{i,j}\ ≤\ 20`).
Вывод
Выведите в выходной файл символическое изображение структуры таблицы.
Изображение `i`-й строки таблицы должно начинаться изображением горизонтальной
линии, составленным из символов '+' (плюс) и '-' (минус).
Затем должна следовать строка, содержащая пробелы и символы
'|' (вертикальная черта). Первым символом строки должна
быть вертикальная черта, затем `a_{i,1}` пробелов, затем вертикальная черта,
затем `a_{i,2}` пробелов, и так далее, всего `m_i` блоков пробелов. После последнего
блока должна следовать вертикальная черта. После последней строки таблицы также
должно следовать изображение горизонтальной линии.
В изображении горизонтальной линии используйте
символ '+', если сверху или снизу от этой позиции находится
вертикальная черта, и '-' в противном случае. Горизонтальная линия
должна иметь минимальную возможную длину, чтобы над каждым символом
вертикальной черты следующей строки и под каждым символом вертикальной
черты предыдущей строки были символы '+'.
Пример ввода
4
3 3 5 1
1 2
1 2
2 5 1
Пример вывода
+---+-----+-+
| | | |
+--++-----+-+
| |
+--+
| |
+--+--+-+
| | |
+-----+-+
Источник: VI Всероссийская командная олимпиада школьников по программированию, 2005