問題一覧 > 通常問題

No.615 集合に分けよう

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 255
作問者 : ミドリムシ / テスター : はむこ
32 ProblemId : 2022 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2017-12-09 11:00:10
 この問題は、Advent Calendar Contest 2017の15日目の問題です。

問題文

N個の整数があり、それぞれa1,a2,...anである。
このN個の整数をK個の集合に分けたい。
ここで、集合の大きさを その集合に含まれる要素の最大値と最小値の差 と定義する。
例えば、集合{1,7,4}は最大値が7で最小値が1なので、この集合の大きさは71=6になる。
上手く分けて、分けた後の集合の大きさの総和を最小化したい。
分けた後の集合の大きさの総和の最小値を求めなさい。

ただし、p個の整数をq個の集合x1,x2...xqに分ける とは、次の条件を満たしているということである。
・集合x1,x2,...xqの要素を全て合わせた要素数pの集合を 集合X と呼ぶことにすると、集合Xの各要素とp個の各整数は同じ数同士を対応させると1対1対応する。

入力

N K
a1 a2 ... an

1KN5×104
0ai1012

出力

答えを出力せよ。 末尾に改行を入れること。

注意

この問題で扱う数値が231以上になる可能性がある。

サンプル

サンプル1
入力
5 2
1 10 11 2 9
出力
3

集合{11,9,10}と集合{2,1}に分けると、
{2,1}の大きさは21=1
{11,9,10}の大きさは119=2
となるので、分けた後の集合の大きさの総和は3になり、これが最小値である。

サンプル2
入力
4 2
0 7 3 13
出力
7

集合{0,7,3}と集合{13}に分けることで、最小値を達成できる。

サンプル3
入力
3 3
1 10 100
出力
0

集合{1}と集合{10}と集合{100}に分けることで、最小値を達成できる。

サンプル4
入力
3 1
0 0 1000000000000
出力
1000000000000

集合{0,0,1000000000000}に分けることしか出来ず、この時が最小値になる。
オーバーフローに注意。

サンプル5
入力
10 3
1 12 19 23 28 3 32 36 41 7
出力
28

集合{12}と集合{28,23,41,19,32,36}と集合{3,1,7}に分けることで、最小値を達成できる。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。