Предположим, что у вас есть большая коллекция пар ключ/значение, где значение представляет собой произвольное действительное число. Вы заинтересованы в создании структуры данных, поддерживающей следующие операции:
- Вставить, который добавляет новую пару ключ/значение в коллекцию,
- Удалить, который удаляет пару ключ/значение из коллекции,
- Percentile, в котором указывается, какой процентиль имеет значение, связанное с данным ключом, и
- Tell-Percentile, который принимает номер процентиля и возвращает ключ, значение которого является самым низким значением, по крайней мере, для данного процентиля.
Эта структура данных может использоваться, например, для эффективного определения того, что процентиль данного учащегося находится при получении потока общенациональных тестов, или для выявления больниц, которые имеют необычно хорошее или плохое качество обслуживания.
Есть ли способ сделать эти операции эффективными (скажем, сублинейное время?)