и никак не могу уложиться в таймлимит. Собственно задача классика:
Даны k отсортированных в порядке неубывания массивов неотрицательных целых чисел, каждое из которых не превосходит 100. Требуется построить результат их слияния: отсортированный в порядке неубывания массив, содержащий все элементы исходных k массивов.
Длина каждого массива не превосходит 10 ⋅ k.
Постарайтесь, чтобы решение работало за время k ⋅ log(k) ⋅ n, если считать, что входные массивы имеют длину n.
Первая строка входного файла содержит единственное число k, k ≤ 1024.
Каждая из следующих k строк описывает по одному массиву. Первое число каждой строки равняется длине соответствующего массива, оставшиеся числа этой строки описывают значения элементов этого же массива. Элементы массивов являются неотрицательными целыми числами и не превосходят 100.
Ограничение времени Ограничение памяти
1 секунда 10Mb
Собственно что смог накарябать: https://pastebin.com/yXS7B64Z
Решение рабочее, но упирается в тайм лимит. Как сделать k ⋅ log(k) ⋅ n и вообще улучшить скорость?
И да только не в беггинерс)
heapq.merge
Ты просто каждый раз пересортируешь вообще все
С числами от 0 до 100 это трешается за k. То есть два прохода
Обсуждают сегодня