Готовлюсь к собесу в яндекс, помогите плз решить задачу.
Знаю только js, поэтому пишу на node js.
Задача:
Даны k отсортированных в порядке неубывания массивов неотрицательных целых чисел, каждое из которых не превосходит 100. Требуется построить результат их слияния: отсортированный в порядке неубывания массив, содержащий все элементы исходных k массивов.
Длина каждого массива не превосходит 10 ⋅ k.
Постарайтесь, чтобы решение работало за время k ⋅ log(k) ⋅ n, если считать, что входные массивы имеют длину n.
Формат ввода
Первая строка входного файла содержит единственное число k, k ≤ 1024.
Каждая из следующих k строк описывает по одному массиву. Первое число каждой строки равняется длине соответствующего массива, оставшиеся числа этой строки описывают значения элементов этого же массива. Элементы массивов являются неотрицательными целыми числами и не превосходят 100.
Формат вывода
Выходной файл должен содержать отсортированный в порядке неубывания массив, содержащий все элементы исходных массивов.
ПримерВвод
4
6 2 26 64 88 96 96
4 8 20 65 86
7 1 4 16 42 58 61 69
1 84
Вывод
1 2 4 8 16 20 26 42
58 61 64 65 69 84 86
88 96 96
Мое решение падает на тестах из-за ограничения по памяти.
const readline = require('readline')
const fs = require('fs')
const path = require('path')
const rl = readline.createInterface({
input: fs.createReadStream(path.join(__dirname, '/input.txt'))
})
let arr
const array = new Array(101)
rl.once('line', () => {
rl.on('line', (line) => {
arr = line.split(' ')
for (let i = 1; i < arr[0] + 1; i++) {
if (array[arr[i]]) {
array[arr[i]] = array[arr[i]] + ' ' + arr[i]
} else {
array[arr[i]] = arr[i]
}
}
})
.on('close', () => {
for (const val of array) {
if (val) {
process.stdout.write(val + ' ')
}
}
})
})