Игра Рогалик
(Время: 2 сек. Память: 256 Мб Сложность: 41%)
Вас попросили поучаствовать в разработке Инди-проекта. Требуется написать программу, которая выводит аватарку персонажа в соответствии его текущего здоровья.
Аватарка персонажа представляет собой матрицу w на h символов. Персонаж состоит из n частей тела, i-я часть тела представляет собой подматрицу фиксированного размера bwi×bhi с фиксированными координатами левого верхнего угла bxi и byi. Подматрицы, задающие части тела, не пересекаются.
Для каждой части тела существует ki различных спрайтов, которые могут изображаться в соответствующей подматрице. Спрайт j для i-й части тела задаётся в виде набора символов, расположенного в виде матрицы bwi×bhi, где i — номер части тела, к которой он относится, а также числа hpj — уровня здоровья персонажа, соответствующего этому спрайту. Гарантируется, что все hpj для одной части тела попарно различны.
При выводе аватарки персонажа для каждой части тела выбирается спрайт, для которого значение hpj не меньше текущего уровня здоровья персонажа, а разность hp−hpj является минимальной по всем возможным j. Если здоровье персонажа превосходит все значения hpj, из них выбирается спрайт с наибольшим hpj.
Во время игры текущий уровень здоровья hp персонажа меняется t раз. После каждого изменения уровня здоровья требуется выводить актуальную аватарку.
Входные данные
В первой строке входного файла INPUT.TXT через пробел вводятся три целых числа w, h и n — размер аватарки в символах (сначала ширина, потом высота) и количество частей тела персонажа (1 ≤ w, h, n ≤ 100), соответственно.
Далее задаются части тела.
Первая строка i-го из n описаний задаёт параметры i-й части тела и содержит пять целых чисел bxi, byi, bwi, bhi и bki — координаты левого верхнего угла и размеры подматрицы, а также количество вариаций спрайтов, соответственно (0 ≤ bxi < w; 0 ≤ byi < h; 1 ≤ bwi ≤ w; 1 ≤ bhi ≤ h; 1 ≤ bki ≤105).
В следующих строках вводятся данные о bki спрайтах, существующих для i-й части тела.
В первой строке, описывающей j-й спрайт, вводится единственной целое число hpj — количество здоровья, при котором требуется вывести спрайт (0 ≤ hpj ≤ 105). Гарантируется, что для одной части тела величина hpj каждого спрайта уникальна.
После этого, в следующих bhi строках вводится bwi символов (ASCII Code данных символов находится в диапазоне от 33 до 126).
После того, как вся информация о частях тела была введена, в следующей строке вводится единственное целое число t — количество изменений состояния здоровья персонажа (1 ≤ t ≤ 105).
В следующей строке вводится t целых чисел hpc — текущее количество здоровья персонажа (0 ≤ hpc ≤ 105).
Гарантируется, что суммарное количество символов спрайтов не превосходит 105. Также гарантируется, что кол-во символов в выводе O = w⋅h⋅t не превосходит 105.
Выходные данные
Для каждого из t состояний в выходной файл OUTPUT.TXT выведите h строк по w символов в каждой — соответствующую текущему уровню здоровья hpc аватарку персонажа. В позициях, не соответствующих никакой части тела, требуется вывести символ '.'.
Примеры
№ | INPUT.TXT | OUTPUT.TXT |
1 | 3 5 5
1 0 1 1 3
10
|
100
W
50
V
1 1 1 3 2
0
_
_
_
1
#
#
#
0 2 1 1 1
0
<
2 2 1 1 2
25
>
26
<
0 4 3 1 3
10
+++
15
===
100
!!!
5
25 9 90 11 0
| .V.
.#.
<#>
.#.
!!!
.|.
.#.
<#>
.#.
+++
.W.
.#.
<#<
.#.
!!!
.V.
.#.
<#>
.#.
===
.|.
._.
<_>
._.
+++
|
2 | 1 1 1
0 0 1 1 5
0
A
1
B
2
C
4
D
3
E
7
0 1 2 3 4 5 6
| A
B
C
E
D
D
D
|
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
|