Здравствуйте.
Подскажите, пожалуйста, какую структуру данных нужно использовать для того, чтобы последовательное выполнение
команд вставки и удаления половины элементов с наибольшими ключами производилось за
времени. Предполагается, что структура изначально пустая.
Понятно, что если 2-ую операцию реализовать за время
, то условие будет выполнено.
Даже ясна одна из реализаций: нужно удалить - считаешь медиану (такой элемент, что в упорядоченном множестве находился бы посередине(или один из элементов, если их несколько) множества и разбиваешь на 2 половинки: больше её и меньше, большую удаляешь. Для нахождения медианы есть детерминированный алгоритм, работающий за
, а для второго достачно и вовсе одного пробега по массиву. Т.е. условие выполнено.
Но проблема в том, что для нахождения медианы хоть и требуется линейное время, но коэффицент очень велик, поэтому поступать так не очень хорошо, и, скорее всего, есть другое решение. Подскажите, пожалуйста.
Спасибо.
p.s. задача из книги Кормен "Алгоритмы, построение и анализ".