入力として負でない整数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
。 - 複数の正解が存在する場合は、そのうちの1つだけを出力します(いずれか1つで十分です)。
- あなたの解決策は、私のコンピューターで1分以内にすべてのサンプルテストケースを解決する必要があります(近くのケースのみをテストします。平均以下のPCを持っています)。
例
入力(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>
2要素のタプルをアンパックするために使用することを考えたことがありません。