Словарь
Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Однажды, разбирая старые книги на чердаке, школьник Вася нашёл англо-латинский словарь. Английский он к тому времени знал в совершенстве, и его мечтой было изучить латынь. Поэтому попавшийся словарь был как раз кстати.
К сожалению, для полноценного изучения языка недостаточно только одного словаря: кроме англо-латинского необходим латинско-английский. За неимением лучшего он решил сделать второй словарь из первого.
Как известно, словарь состоит из переводимых слов, к каждому из которых приводится несколько слов-переводов. Для каждого латинского слова, встречающегося где-либо в словаре, Вася предлагает найти все его переводы (то есть все английские слова, для которых наше латинское встречалось в его списке переводов), и считать их и только их переводами этого латинского слова.
Помогите Васе выполнить работу по созданию латинско-английского словаря из англо-латинского.
В первой строке содержится единственное целое число `N` – количество английских слов в словаре.
Далее следует `N` описаний.
Каждое описание содержится в отдельной строке, в которой записано
сначала английское слово, затем отделённый пробелами дефис (символ номер 45), затем
разделённые запятыми с пробелами переводы этого английского слова на латинский.
Переводы отсортированы в лексикографическом порядке.
Порядок следования английских слов в словаре также лексикографический.
Все слова состоят только из маленьких латинских букв, длина каждого слова не превосходит `15` символов.
Общее количество слов на входе не превышает `100\ 000`.
Выведите соответствующий данному латинско-английский словарь, в точности соблюдая формат
входных данных. В частности, первым должен идти перевод лексикографически минимального
латинского слова, далее – второго в этом порядке и т.д. Внутри перевода английские слова
должны быть также отсортированы лексикографически.
Пример ввода
3
apple - malum, pomum, popula
fruit - baca, bacca, popum
punishment - malum, multa
Пример вывода
7
baca - fruit
bacca - fruit
malum - apple, punishment
multa - punishment
pomum - apple
popula - apple
popum - fruit
"Лексикографический порядок" означает, что слова идут по алфавиту. Иначе говоря, если у
двух слов `A` и `B` несколько первых символов совпадают, то раньше идет то, у которого
первая буква после общей части идет в алфавите раньше (например, слова solution и solve
идут именно в таком порядке, так как первые 3 буквы в этих словах совпадают, а 4-я буква u в
слове solution идет по алфавиту раньше буквы v слова solve).
Если слово A является началом слова B, то раньше идет слово A (например, сначала идет
слово school, а затем слово schoolboy).
Источник: Московская олимпиада школьников по информатике, 2010/11 учебный год