10629: Словник
Реалізуйте структуру даних типу “множина рядків”. Збережені рядки – непусті послідовності довжиною трохи більше 10 символів, що складаються з малих латинських букв. Структура даних повинна підтримувати операції додавання рядка до множини, видалення рядка з множини та перевірки належності даного рядка множині. Максимальна кількість елементів у множині, що зберігається, не перевищує 500000
Формат вхідних даних
Кожен рядок вхідних даних визначає одну операцію над множиною. Запис операції складається з типу операції та наступного за ним через пропуск рядка, над яким проводиться операція. Тип операції – один із трьох символів:
- '+' означає додавання цього рядка до множини;
- '-' означає видалення рядка з множини;
- '?' означає перевірку належності даного рядка у множині.
Загальна кількість операцій у вхідному файлі не перевищує \(10^6\). Список операцій завершується рядком, в якому записано один символ # – ознака кінця вхідних даних. При додаванні елемента до множини НЕ ГАРАНТУЄТЬСЯ, що він відсутній у цій множині. При видаленні елемента з множини НЕ ГАРАНТУЄТЬСЯ, що він присутній у цій множині.
Формат вихідних даних
Програма має вивести для кожної операції типу ? один із двох рядків - YES або NO, залежно від того, чи зустрічається це слово в нашій множині.
Приклад вхідних даних-1
+ hello
+ bye
? bye
- bye
? bye
? hello
#
Приклад вихідних даних-1
YES
NO
YES
Коментарі