8.7 Стандартные контейнеры

8.7.3 Множество идентификаторов

Условие

Храните уникальные целочисленные идентификаторы в std::set<int>. Исходно множество пусто. Обработайте команды ADD value, REMOVE value, HAS value, SIZE. Повторное добавление не создаёт новый элемент; удаление отсутствующего значения не меняет множество.

Для ADD определите, было ли значение добавлено впервые; для REMOVE — был ли элемент удалён. Используйте операции std::set; хранение всех идентификаторов в массиве или std::vector вместо множества запрещено.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.

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

В первой строке вводится Q. Следующие Q строк содержат команды. Ограничения: 1 ≤ Q ≤ 100000, 0 ≤ value ≤ 10⁹.

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

Для ADD выведите ADDED или EXISTS; для REMOVE — REMOVED или NOT FOUND; для HAS — YES или NO; для SIZE — текущий размер множества. Каждый ответ — отдельная строка. После всех ответов выведите оставшиеся идентификаторы в порядке возрастания через пробел; если множество пусто, выведите пустую строку.

Примеры

Вход 1
6
ADD 7
ADD 3
ADD 7
HAS 3
REMOVE 7
SIZE
Ожидаемый выход
ADDED
ADDED
EXISTS
YES
REMOVED
1
3
Вход 2
4
REMOVE 5
HAS 5
ADD 5
REMOVE 5
Ожидаемый выход
NOT FOUND
NO
ADDED
REMOVED

Вход 3
5
ADD 1000000000
ADD 0
SIZE
HAS 1
REMOVE 1
Ожидаемый выход
ADDED
ADDED
2
NO
NOT FOUND
0 1000000000

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.