добавить строку в список, либо получить k - ый элемент списка при условии, что строки отсортированы. Ограничение 1250 мс.
Ничего лучше дерева поиска для этой задачи, кажется нет
Любое балансирующеся
Декартач с размерами поддеревьев для динамического поиска k-ой порядковой за log, если нужно быстро написать
Можно написать бор, он будет отвечать на каждый запрос за длину строки
А k - ый получать через обход in_order?
Если k фиксированное, то можно кучу создать на к элементов) и нужный элемент всегда в вершине будет
ну это должно быть хуже чем бор если строки за линию сравнивать
Ты прав. Не обратил внимание, что со строками работаем
будем поддерживать декартово дерево и сравнивать строки с помощью хэширования за log n, итого O(S + q log S log q), где S - суммарная длина строк
Можно делать встроенным сетом, переписав компаратор на свой
можно, да, только не встроенным, а из pb_ds
Да, забыл, что дефолтный сет не умеет обращаться к случайному элементу :(
Trie проще всего, с хранением количества потомков для каждого элемента. Тогда поиск и по элементу и по индексу log(n)
Кажется у трие даже не лог, а длина ключа.
Обсуждают сегодня