Phonebook
ПрАнКА 2010
Time Limit: 0.5s, Memory Limit: 64MiB
Елеонора е доста озадачена от телефонния указател на своя телефон. На моменти безполезен като пепелник на мотор и неефективен като random_shuffle() използван за сортиращ алгоритъм, той създава маса главоболия на използващите го, а в частност и на Ели. По тази причина вие, като нейни приятели, решавате да й помогнете и да пренапишете софтуера му.
Телефонният указател трябва да може да изпълнява следните заявки:
Телефонният указател трябва да може да изпълнява следните заявки:
add <name> <number>
– добавя на човека с име<name>
и номер<number>
queryname <name>
– извежда информация за всички различни номера (сортирани лексикографски) на човек с име<name>
querynum <number>
– извежда информация за всички хора (сортирани лексикографски) които отговарят на номер<number>
delname <name>
– изтрива информацията за човек с име<name>
delnum <number>
– изтрива информацията за номер<number>
Вход
На първия ред на стандартния вход ще бъде зададено едно число N на отделен ред – броят заявки, които вашата програма трябва да обработи. На всеки от следващите N реда ще бъде зададена по една заявка от описаните по-горе.
Изход
За всяка заявка от тип queryname
и querynum
изведете на отделен ред на стандартния изход разделени с по един интервал, сортирани лексикографски съответните имена или номера, които заявката очаква да изпечатате. Ако въпросното име или номер не съществуват изпечатайте само празен ред за съответната заявка.
Ограничения
- 1 ≤ N ≤ 100,000
- Всяко име или номер във входа ще бъде не по-дълго от 16 символа.
Примерен Вход | Примерен Изход |
---|---|
10 add Kriss 0888424242 add Kriss 0883666666 queryname Kriss querynum 0883266642 querynum 0888424242 delnum 0883666666 queryname Kriss add Elly 0888424242 querynum 0883666666 querynum 0888424242 | 0883666666 0888424242 Kriss 0888424242 Elly Kriss |
С първите две заявки записваме два номера на Крис. С третата заявка искаме да изпечатаме всички номера, записани за нея, в лексикографски ред. Четвъртата заявка е за несъществуващ номер, затова печатаме празен ред. Петата заявка е за единия от номерата на Крис, затова печатаме нейното име. След това изтриваме единия от номерата й, и при следващото питане за нея вече печатаме само останалия номер. В седмата заявка добавяме телефон на Ели, който съвпада с телефона на Крис. На предпоследната заявка питаме за (изтрития) номер на Крис. Тъй като той вече не съществува, печатаме празен ред. В последната заявка питаме за номера, който Крис и Ели делят. Имената на момичетата отново са изпечатани в лексикографски ред.