| |||||||
09.Японские кроссворды
Японский кроссворд это очень популярная игра. В ней картинка из закрашенных
ячеек зашифрована с помощью чисел.
В начале игры перед вами сетка из пустых ячеек. Каждая строка(столбец)
содержат несколько чисел в самом начале строки(столбца).
Каждое число означает сколько закрашенных ячеек подряд содержится в картинке
(длину группы закрашенных ячеек).
Закрашенные ячейки упорядочены слева направо и сверху вниз.
Между каждой группой закрашенных ячеек содержится хотя бы одна пустая
ячейка.
Например, если заданы числа 4, 2, 7, то это означает что в строке всего три
группы закрашенных ячеек, и что первая группа длины 4, вторая группа длины
2, а третья группа длины 7.
Ваша задача - расшифровать картинку по заданным подсказкам.
Входные данныеВ первой строке входных данных содержится положительное число t<=300 - количество тестов. Далее для каждого теста первая строка задает количество строк R и количество столбцов C в картинке (1<=R<=50, 1<=C<=100). Ниже следуют R строк. Каждая строка состоит из нескольких целых чисел (горизонтальных подсказок). В конце каждой строки находится 0. После этого следуют еще С строк. Каждая строка состоит из нескольких целых чисел (вертикальных подсказок) и заканчивается нулем. Строки могут состоять из единственного 0 (когда строка в картинке полностью пустая). Выходные данныеДля каждого теста вы должны расшифровать картинку и вывести ее в виде прямоугольника из R строк и C символов в каждой строке. Символ '#'(решетка) означает заполненную ячейку, символ '.'(точка) означает пустую ячейку. Начисление очковОчки, полученные вашей программой, складываются из очков, которые получаются для каждого теста отдельно. Очки за тест вычисляются следующим образом: за каждую правильно расположенную строку (или столбец) дается 1 очко. Правильно расположенной строкой (или столбцом) называется строка(столбец), в которой количество групп совпадает с количествов чисел подсказки и длина каждой группы равна соответствующему числу подсказки. Если все строки и столбцы картинки расположены верно, то полученный результат увеличивается в 1.5 раза. ПримерВходные данные: 1 10 5 3 0 2 2 0 5 0 5 0 3 0 1 0 1 0 3 0 2 0 3 0 3 0 5 0 1 8 0 5 3 0 3 1 1 0 Выходные данные: .###. ##.## ##### ##### .###. ..#.. ..#.. ..### ..##. ..### Начисление очков: (10+5)*1.5 = 22.500 Дополнительная информация: Если количество очков равно xxx.xxxaaa, то aaa показывает количество полностью правильных решений |
|||||||
|