eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

ClosedCup

ClosedCup

Лимит времени 1 секунда
Лимит использования памяти 64 MiB

Пингвину Багу Рокгаду снова чудится заговор. На этот раз ему подозрительна активность пингвинов-коммандос в соревновании по спортивному программированию ClosedCup. В данном мероприятии принимает участие огромное количество команд, потому они все, по мнению Бага, также могут быть потенциальными заговорщиками.

Первое, что необходимо нашему пингвину - это упорядочить разрозненные данные об участниках ClosedCup. У Бага есть список команд, когда-либо принимавших участие в соревнованиях. Каждая команда задается названием и списком участников. В списке одна и та же команда может быть перечислена несколько раз, или одному и тому же названию могут соответствовать разные участники.

Помогите Багу Рокгаду составить для каждого названия команды список её участников за всё время. Для этого выведите список названий команд в лексикографическом порядке {Строка x лексикографически меньше строки y, если либо x является префиксом y (и при этом xy), либо существует такое i (1imin(|x|, |y|)), что x_i < y_i, и для любого j (1j < i) x_j = y_j. Здесь |a| обозначает длину строки a. Лексикографическое сравнение строк реализует оператор < в современных языках программирования}, а для каждого названия перечислите участников, которые выступали за данную команду хотя бы один раз. Участников необходимо выводить в порядке убывания количества участий. При равенстве количества участий выводите данные в лексикографическом порядке.

Входные данные

В первой строке входного файла содержится одно число N (1N100000) - количество записей о командах. В последующих N строках перечислены данные о командах. Каждая запись состоит из названия команды и списка участников. Название команды состоит из символов с кодами от 32 до 126, кроме 58 (':'). Название не пусто и его длина не превышает 20 символов. Далее следует двоеточие, пробел и список участников. Каждый участник задается либо именем и фамилией (два непустых слова), либо никнеймом (одно непустое слово). Каждое слово в информации об участнике состоит только из строчных или прописных латинских букв. Имя и фамилия разделяются одним пробелом. Список участников состоит из одного, двух или трёх наименований. Все наименования участников различны. После каждого из участников, кроме последнего, следут запятая и пробел. После последнего наименования следует точка и символ перевода строки. Длина информации об одном участнике не превышает 20 символов (включая пробел между именем и фамилией).

Размер входного файла не превышает одного мегабайта. Входной файл всегда оканчивается пустой строкой.

Выходные данные

В выходной файл выведите M описаний команд, разделённых пустой строкой. Каждое описание должно состоять из названия команды, двоеточия и списка участников, которые хотя бы один раз участвовали в команде с данным названием. Информацию о каждом участнике выводите на новой строке. Сначала выведите четыре пробела, потом имя и фамилию, разделенные пробелом или никнейм участника, потом запятую, пробел и количество раз, этот участник выступал на соревнованиях за эту команду. В конце выведите точку и сразу же символ перевода строки. Участников выводите в порядке уменьшения количества участий, при равенстве, выводите их в лексикографическом порядке.

Описания команд выводите в лексикографическом порядке относительно названий команд. В выходном файле не должно быть лишних пустых строк.

Пример

Входные данные #1
9
MegaMind: RicO.
Commandos: Skipper, Kowalski, Private.
Commandos: RicO, Kowalski, Private.
Commandos: Skipper, RicO, Private.
Commandos: Skipper, Kowalski, RicO.
Commandos: Skipper, Kowalski, unknown object.
MegaMind: RicO.
Lemuria_the_best: King Julien, Maurice, Mort.
MegaMind: King Julien.
Выходные данные #1
Commandos:
    Kowalski, 4.
    Skipper, 4.
    Private, 3.
    RicO, 3.
    unknown object, 1.

Lemuria_the_best:
    King Julien, 1.
    Maurice, 1.
    Mort, 1.

MegaMind:
    RicO, 2.
    King Julien, 1.
Источник Яндекс, отбор ЗКШ 2011-2012, 1 тур