printРабочее место участника

printЗадачи

1667. Изображение таблицы

Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение 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
loading