1863: Графічний процесор

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 24,00 (partial)
Time limit: 3.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type
Allowed languages
Assembly, Awk, Brain****, C, C++, Java, mono C#, Pascal, Perl, Python, Sed, Text, vb

Багато років тому персональні комп'ютери мали лише текстовий екран, тобто, могли виводити інформацію на екран лише за допомогою букв, цифр, розділових знаків та інших символів. Але це не означає, що тодішні користувачі відмовилися від зображень! Виявилося, що за допомогою різних символів можна будувати різні зображення. Оскільки вручну це робити доволі довго, пропонуємо скласти програму, яка, прочитавши код зображення, відтворить його на текстовому «екрані» шириною ~W~ та висотою ~H~ символів, спочатку заповненому символами, які позначають тло.

Код зображення, крім інформації про розміри та тло, міститиме графічні команди.

Загальна структура команди:

\<код команди>\<пропуск\>\<код кольору>\<пропуск\>\<параметри, відокремлені пропусками>

Тут:

\<код команди> — велика латинська буква (H — горизонтальна лінія, V — вертикальна лінія, R — прямокутник, S — заповнений прямокутник, F — заливка)

\<код кольору> — символ, з якого будується фігура або яким заливається ділянка зображення. Початок координат — символ з координатами (0, 0) — розташований у лівому верхньому куті. Вісь X напрямлена вправо, вісь Y — вниз.

Наприклад:

– H # 0 0 50 - горизонтальна лінія зі символів '#' від (0,0) вправо довжиною 50

– V & 21 14 60 - вертикальна лінія зі символів '&' від (21,14) вниз довжиною 60

– R # 30 11 8 12 - прямокутник із символів '#' з лівим верхнім кутом (30,11) шириною 8 і висотою 12

– S ! 10 4 6 20 - зафарбований прямокутник із символів '!' з лівим верхнім кутом (10,4) шириною 6 і висотою 20

– F 30 11 - заливання символом '', починаючи з (30,11). Заливання поширюється вгору, вниз, вліво і вправо, замінюючи такі символи, як той, що був у позиції початку заливання.

~3 \le W, H \le 1000~

\<код команди> - символи проміжку 'A'..'Z'

\<код кольору>, \<позначка тла> - малі англійські букви, символи '!', '#', '\$', '%', ''̂, '&', '5', '?', ':', '', '.', '-', '=', '+', '%'

Input

У першому рядку вхідного потоку містяться два цілі числа ~W~ і ~H~ — ширина та висота екрану.

У другому рядку міститься символ — позначка для тла.

У третьому рядку міститься одне ціле число ~N~ — кількість команд.

У наступних ~N~ рядках містяться коди команд, по одному в рядку.

Output

Вивести у вихідний потік ~H~ рядків по ~W~ символів у кожному — зображення на екрані після опрацювання команд.

Sample Input 1

8 5
-
1
V * 5 0 4

Sample Output 1

-----*--
-----*--
-----*--
-----*--
--------

Sample Input 2

10 10
.
5
R * 0 4 10 6
S * 3 0 4 3
R & 5 3 1 2
F 5 8 3
H ! 3 6 4

Sample Output 2

...****555
...****555
...****555
.....&5555
*****&****
*........*
*..!!!!..*
*........*
*........*
**********

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.