Skip to content

Latest commit

 

History

History
52 lines (36 loc) · 2.95 KB

File metadata and controls

52 lines (36 loc) · 2.95 KB

Упорядоченное множество на АВЛ-дереве

Если Вы сдали все предыдущие задачи, Вы уже можете написать эффективную реализацию упорядоченного множества на АВЛ-дереве. Сделайте это.

Для проверки того, что множество реализовано именно на АВЛ-дереве, мы просим Вас выводить баланс корня после каждой операции вставки и удаления.

Операции вставки и удаления требуется реализовать точно так же, как это было сделано в предыдущих двух задачах, потому что в ином случае баланс корня может отличаться от требуемого.

Формат входного файла

В первой строке файла находится число N (1 \leqslant N \leqslant 2 \cdot 10^5) -- число операций над множеством. Изначально множество пусто. В каждой из последующих N строк файла находится описание операции.

Операции бывают следующих видов:

  • A x -- вставить число x в множество. Если число x там уже содержится, множество изменять не следует.
  • D x -- удалить число x из множества. Если числа x нет в множестве, множество изменять не следует.
  • C x -- проверить, есть ли число x в множестве.

Формат выходного файла

Для каждой операции вида C x выведите Y, если число x содержится в множестве, и N, если не содержится.

Для каждой операции вида A x или D x выведите баланс корня дерева после выполнения операции. Если дерево пустое (в нем нет вершин), выведите 0.

Вывод для каждой операции должен содержаться на отдельной строке.

Пример

input.txt

6
A 3
A 4
A 5
C 4
C 6
D 5

output.txt

0
1
0
Y
N
-1

Решение

OrderedSet.scala