У меня есть список чисел, в котором мне нужно поддерживать несколько запросов двух типов: либо я могу удалить элемент, либо мне нужно найти k-й наименьший (k может быть разным в каждом запросе) элемент в оставшемся списке.
Поскольку оба они могут поддерживаться в логарифмическом времени, если я использую самобалансирующееся BST, и поскольку std::set
реализовано поверх самобалансирующихся BST, должен существовать API для доступа к элементу kth в логарифмическом времени, используя его. Если такого метода нет:
i) Почему? Мне кажется, что это частый случай использования.
ii) Является ли реализация самобалансирующихся деревьев моей единственной надеждой или я могу заставить ее работать, используя что-то еще?