Давайте я формализую структуру
nikvic.
Есть структура данных, хранящая

элементов (для удобства, а то и так много писать) с типом

(у индексов тип

, у значений —

) и три операции:
Эти операции должны удовлетворять следующим соотношениям:
,
.
И даже вроде больше никаким.
И, конечно, каждая их них должна вычисляться за

времени относительно

.
Не обязательно такая структура должна иметь в своём воплощении какие-нибудь массивы.
Сразу видно, что способом
venco любую структуру, реализующую

и

с временной сложностью

— а не только массив — можно превратить в искомую.
(Формализация получилась очень неудачная, но верная для того, кто понимает использованные обозначения так же, как я сейчас.)