Николай решил стать лучшим программистом на свете! Теперь он регулярно участвует в разнообразных соревнованиях по программированию, внимательно слушает разборы и дорешивает несданные задачи. Проблема в том, что он уже поучаствовал в таком количестве соревнований, что совершенно запутался, какие задачи он решил, а какие нет. И тогда Николай задумал написать такую программу, которая сама прочитает логи соревнований и построит красивую сводную таблицу по задачам. Так как Николай занят, участвуя в очередном соревновании по программированию, он делегировал эту задачу вам!
Исходные данные
В первой строке дано целое число n (1 ≤ n ≤ 100) — количество описаний соревнований. Далее даны описания. В первой строке описания дано название соревнования — строка длиной от 1 до 30 символов, состоящая из латинских букв, цифр и пробелов. Гарантируется, что название не начинается и не заканчивается на пробел. Во второй строке описания дана дата проведения соревнования в формате DD.MM.YY. Гарантируется, что дата является корректной, а YY может принимать значения от 00 до 99, что соответствует годам от 2000 до 2099. В третьей строке описания через пробел даны числа p и s (1 ≤ p ≤ 13, 0 ≤ s ≤ 100) — количество задач и количество посылок Николая в соревновании. Далее даны s строк — описания посылок. Описание каждой посылки состоит из буквы задачи и вердикта, разделённых пробелом. Буква задачи — заглавная латинская буква, задачи пронумерованы первыми p буквами английского алфавита. Вердикт может быть одним из следующих: Accepted, Wrong Answer, Runtime Error, Time Limit Exceeded, Memory Limit Exceeded, Compilation Error.
Результат
Выведите таблицу, состоящую из n + 1 строк и 3 столбцов. Каждая строка, кроме первой, задаёт описание очередного соревнования. В первом столбце указывается название соревнования, во втором столбце — дата проведения соревнования (ровно так, как она дана на входе), в третьем столбце — описание задач. Описание задач — строка из 13 символов, где i-й символ соответствует i-й задаче. Если по задаче был получен хотя бы один вердикт Accepted, этот символ равен ’o’. Иначе, если по задаче была совершена хотя бы одна посылка, этот символ равен ’x’. Иначе, если такая задача была предложена на соревновании, этот символ равен ’.’. Иначе этот символ равен ’ ’ (пробел). Соревнования в таблице должны быть в том же порядке, что и на входе.
Ширина столбца с названием соревнования составляет 30 символов, причём более короткие названия дополняются до этой длины пробелами справа. Столбцы с датой проведения и описанием задач имеют ширину 8 и 13 символов соответственно.
В первой строке таблицы перечислены названия столбцов. Границы таблицы отформатированы с помощью символов ’|’, ’-’ и ’+’. Более подробное представление о формате вывода можно получить, изучив тестовый пример.
Пример
исходные данные | результат |
---|
2
Codeforces Gamma Round 512
29.02.16
5 4
A Accepted
B Accepted
C Accepted
E Accepted
URKOP
17.10.15
12 11
A Accepted
B Wrong Answer
B Time Limit Exceeded
J Accepted
B Accepted
J Time Limit Exceeded
J Accepted
F Accepted
E Runtime Error
H Accepted
E Runtime Error
| +------------------------------+--------+-------------+
|Contest name |Date |ABCDEFGHIJKLM|
+------------------------------+--------+-------------+
|Codeforces Gamma Round 512 |29.02.16|ooo.o |
+------------------------------+--------+-------------+
|URKOP |17.10.15|oo..xo.o.o.. |
+------------------------------+--------+-------------+ |
Автор задачи: Кирилл Бороздин (подготовка — Кирилл Бороздин, Алексей Данилюк)
Источник задачи: Уральская региональная командная олимпиада по программированию 2015