Вот очень уродливый ответ:
1. Take the first interval;
2. Since logK should be small, we allocate logK binary tree nodes, and we place the first element in the middle;
3. For the rest of the elements, we use method similar to binary search to search if it is already included, or we add this element;
4. Produce a sorted list with all the values in the interval;
5. Use Counting Sort with this list on the interval;
6. Do this for all the intervals.
Время, используемое для 2,3, равно O (K * logloglogK), поскольку поиск занимает самое большее logloglogK (войти в элементы loglogK) и повторяется в течение K раз. 4 Используйте не более O (loglogK) времени для обхода всех узлов со значениями. 5 занимает время O (K), аналогично счетной сортировке. Таким образом, общее время должно быть O (nlogloglogK).
Любой вопрос приветствуется, так как я очень сонный и не могу гарантировать, что я думаю прямо.