Ви повинні написати програму або функцію, яка приймає невід'ємне ціле число k
та відсортований цілий список L
як вхід і вихід або повертає згладжений список M
.
M
створюється із висхідного списку L
, вставляючи не більше k
цілих елементів, зберігаючи список відсортованим. Вставлені цілі числа слід вибирати таким чином, щоб максимальна різниця вперед M
була якомога меншою. Ми найменуємо це найменше значення «гладкість».
Передні переліки в списку -1 3 8 11 15
є, 4 5 3 4
а максимальна різниця вперед 5
.
З 2
вставками плавність 2 10 15
є, 4
а можливий вихід - 2 6 10 11 15
з перепадами вперед 4 4 1 4
.
Вхідні дані
- Невід’ємне ціле число
k
. - Цілий цілий список, що
L
містить щонайменше 2 елементи.
Вихідні дані
- Цілочисельний список за зростанням
M
. - Якщо існує декілька правильних відповідей, виведіть саме один із них (достатньо будь-якого).
- Ваше рішення має вирішити будь-який приклад тестового випадку за хвилину на моєму комп’ютері (я перевіряю лише тісні випадки. У мене ПК нижче середнього рівня).
Приклади
Введення ( 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>
щоб розпакувати двоелементні кортежі.