Учитывая пустой массив, мне нужно сделать два типа запросов
-
Вставка элемента в массив
-
Поиск индекса какого-либо элемента k (очевидно, массив нужно сортировать)
Это можно сделать, используя set
container
set<int> st;
set.insert(t);
Это добавит мой элемент в O(log(n))
.
И для второго запроса
set<int>::iterator it;
it = st.find(k);
idx = distance(st.begin(), it);
Это занимает время O(n)
. (O(n)
[для distance()
[+ O(log(n)
[для set::find()
]).
Есть ли способ сделать оба запроса в O(log(n))
с помощью предопределенных контейнеров С++?