Награда за задачу

200

ЗАДАЧА A. Двоичное дерево поиска

Реализуйте сбалансированное двоичное дерево поиска.


ВХОДНЫЕ ДАННЫЕ

Входной файл содержит описание операций с деревом, их количество не превышает 100000. В каждой строке находится одна из следующих операций:

insert x — добавить в дерево ключ x. Если ключ x в дереве уже есть, то ничего делать не надо.
delete x — удалить из дерева ключ x. Если ключа x в дереве нет, то ничего делать не надо.
exists x — если ключ x есть в дереве, выведите «true», иначе «false»
next x — выведите минимальный элемент в дереве, строго больший x, или «none», если такого нет.
prev x — выведите максимальный элемент в дереве, строго меньший x, или «none», если такого нет.
Все числа во входном файле целые и по модулю не превышают 109.


ВЫХОДНЫЕ ДАННЫЕ

Выведите последовательно результат выполнения всех операций exists, next, prev. Следуйте формату выходного файла из примера.


ПРИМЕРЫ

insert 2
insert 5
insert 3
exists 2
exists 4
next 4
prev 4
delete 5
next 4
prev 4

true
false
5
3
none
3

Автор задачи: Fedor





Отправка решений заблокирована