Вы должны написать программу или функцию, которая принимает неотрицательное целое число k
и отсортированный список целых чисел в L
качестве входных данных и выводит или возвращает сглаженный список M
.
M
создается из восходящего списка L
, вставляя не более k
целых элементов, сохраняя список отсортированным. Вставленные целые числа должны быть выбраны таким образом, чтобы максимальная разность вперед M
была настолько малой, насколько это возможно. Мы будем называть это наименьшее значение «гладкостью».
Прогнозные различия в списке -1 3 8 11 15
являются 4 5 3 4
и максимальной вперед разница есть 5
.
С 2
вставками гладкость 2 10 15
IS 4
и возможный выход 2 6 10 11 15
с форвардным различиями 4 4 1 4
.
вход
- Неотрицательное целое число
k
. - Восходящий список целых чисел,
L
по крайней мере, с 2 элементами.
Выход
- Восходящий список целых чисел
M
. - Если существует несколько правильных ответов, выведите ровно один из них (достаточно одного).
- Ваше решение должно разрешить любой пример теста менее чем за минуту на моем компьютере (я буду тестировать только закрытые случаи. У меня компьютер ниже среднего.)
Примеры
Input ( k
, L
) => Возможный вывод и максимальная прямая разница (которая не является частью вывода) в скобках
0, 10 20 => 10 20 (10)
2, 1 10 => 1 4 7 10 (3)
2, 2 10 15 => 2 6 10 11 15 (4)
3, 2 10 15 => 2 5 8 10 12 15 (3)
5, 1 21 46 => 1 8 15 21 27 33 39 46 (7)
5, 10 20 25 33 => 10 14 18 20 24 25 29 33 (4)
3, 4 4 6 9 11 11 15 16 25 28 36 37 51 61 => 4 4 6 9 11 11 15 16 22 25 28 36 37 45 51 59 61 (8)
15, 156 888 2015 => 156 269 382 495 608 721 834 888 1001 1114 1227 1340 1453 1566 1679 1792 1905 2015 (113)
8, -399 -35 -13 56 157 => -399 -347 -295 -243 -191 -139 -87 -35 -13 39 56 108 157 (52)
5, 3 3 3 => 3 3 3 3 (0)
Это код-гольф, поэтому выигрывает самый короткий вход.
rF<seq>
для распаковки двухэлементных кортежей.