Награда за задачу
200
Реализуйте сбалансированное двоичное дерево поиска.
Входной файл содержит описание операций с деревом, их количество не превышает 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