Первый Открытый Зеленоградский турнир 2005

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 показывает количество полностью правильных решений