#icpc2015autumnk. [icpc2015autumn_k]Optimal Tournament

[icpc2015autumn_k]Optimal Tournament

题目描述

在 21XX 年,一年一度的编程竞赛“日本算法大奖赛(JAG)”已成为最受欢迎的智力运动活动之一。你作为 JAG 的主席,正在筹备今年的 JAG 比赛。

JAG 是以淘汰赛的形式进行的。今年将有 NN 名选手参加 JAG。比赛以二叉树的形式呈现,有 NN 个叶子节点,每个叶子节点分配给一个选手。在每场比赛中,两名选手进行比拼。胜者进入下一轮,败者被淘汰出局。唯一留下的选手将成为冠军。最终的比赛对应于二叉树的根节点。

你知道每位选手的实力,A_1,A_2,cdots,A_NA\_1, A\_2, \\cdots, A\_N,表示为一个整数。当两名选手比拼时,实力较大的一方总是获胜。如果他们的实力相同,则胜者由随机确定。

在过去的 JAG 中,有些观众抱怨说有太多无聊的一边倒比赛。为了使 JAG 更有吸引力,你希望找到一个好的比赛安排。

让我们定义比赛和比赛的无聊程度。对于一场比赛,第 ii 名选手与第 jj 名选手进行比拼,我们将比赛的无聊程度定义为两名选手实力的差值,即 A_iA_j|A\_i - A\_j|。而比赛的无聊程度定义为比赛中所有比赛的无聊程度之和。

你的目标是最小化比赛的无聊程度。

在满足比赛高度不超过 KK 的约束条件下,你可以考虑任何形状的比赛,包括不平衡的。比赛的高度定义为从根节点到任何叶子节点的简单路径上的比赛数量的最大值。

图 K-1 显示了样例输入 1 的两种可能比赛方式。左边的比赛高度为 22,右边的比赛高度为 33

图 K-1. 样例输入 1 的两种可能比赛方式

编写一个程序来计算比赛的最小无聊程度。


输入

输入只有一个测试用例,格式如下。

NN KK
A_1A\_1 A_2A\_2 cdots\\cdots A_NA\_N

输入的第一行包含两个整数 NN (2N1,0002 \le N \le 1{,}000) 和 KK (1K501 \le K \le 50)。可以假设 N2KN \le 2^K。第二行包含 NN 个整数 A_1,A_2,cdotsA_NA\_1, A\_2, \\cdots A\_N。其中,A_iA\_i (1A_i100,0001 \le A\_i \le 100{,}000) 表示第 ii 名选手的实力。

输出

输出通过最佳比赛配置所实现的最小无聊程度值。



样例输入 1

4 3
1 3 4 7```

### 样例输出 1

```plain
6```

* * *

### 样例输入 2

```plain
5 3
1 3 4 7 9```

### 样例输出 2

```plain
10```

* * *

### 样例输入 3

```plain
18 7
67 64 52 18 39 92 84 66 19 64 1 66 35 34 45 2 79 34```

### 样例输出 3

```plain
114```