Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Игра Рогалик

(Время: 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.TXTOUTPUT.TXT
13 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.
.#.
<#>
.#.
===

.|.
._.
<_>
._.
+++

21 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


Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2006 / 2007
 2007 / 2008
 2008 / 2009
 2009 / 2010
 2010 / 2011
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 2019 / 2020
 2020 / 2021
 2021 / 2022
 2022 / 2023
 2023 / 2024
 A. Хитрое число
 B. Сортировка за линию?
 C. Игра Рогалик
 D. Школа Зебры
 E. Локдаун Империи
 F. Флагштокинг
 G. GCD Пары
 H. Ещё одна игровая механика
 I. Столкновение пермутонов
 J. Равномерные раскраски

Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru