#joi2016hoa. [joi2016ho_a]オレンジの出荷 (Oranges)

[joi2016ho_a]オレンジの出荷 (Oranges)

将以下文本翻译成中文,要求显示为markdown格式,不要渲染:

你是否了解 Juicy Orange Industry 公司?该公司的业务是种植和运输美味的橙子。在这里,我们简称为 JOI。

JOI 公司需要将收获的 N 个橙子装箱并运输出去。这些橙子按照大小排列在工厂上的传送带上,编号从 1 到 N。第 i 个橙子(1 ≤ i ≤ N)的大小是 Ai。

我们需要将这些橙子按顺序装入一些箱子中。每个箱子只能装连续编号的橙子。

每个箱子最多可以装 M 个橙子。将一些橙子装入一个箱子的成本可以通过公式 K + s × (a - b) 计算得到,其中 a 是装入箱子的最大橙子大小,b 是装入箱子的最小橙子大小,s 是装入箱子的橙子个数。这里的 K 是每个箱子的固定成本,对于所有箱子都是相同的。

为了尽量减小装箱的总成本,我们需要准备适当数量的箱子,并将所有橙子合理地装箱。

任务

请编写一个程序,根据传送带上的橙子信息、每个箱子的最大装载量以及箱子成本,计算出装箱的最小总成本。


输入

从标准输入读取以下输入:

  • 第 1 行包含 3 个整数 N、M 和 K,以空格分隔。它们表示橙子数量为 N,每个箱子的最大装载量为 M,箱子成本为 K。
  • 接下来的 N 行中的第 i 行(1 ≤ i ≤ N)包含一个整数 Ai。它表示第 i 个橙子的大小为 Ai。

输出

在标准输出中以一行输出装箱的最小总成本。


限制

所有输入数据满足以下条件:

  • 1 ≤ N ≤ 20,000。
  • 1 ≤ M ≤ 1,000。
  • 0 ≤ K ≤ 1,000,000,000。
  • 1 ≤ Ai ≤ 1,000,000,000(1 ≤ i ≤ N)。
  • M ≤ N。

子任务

子任务 1 [20 分]

  • 满足 N ≤ 20。

子任务 2 [50 分]

  • 满足 N ≤ 2,000。
  • 满足 M ≤ 100。

子任务 3 [30 分]

无需额外限制。


输入样例 1

6 3 6
1
2
3
1
2
1

输出样例 1

21

将橙子 1 到橙子 3 装入第 1 个箱子,将橙子 4 到橙子 6 装入第 2 个箱子,装箱的总成本为 (6 + 3 × (3 - 1)) + (6 + 3 × (2 - 1)) = 21。

由于无论如何装箱,装箱的总成本都不会低于 21,因此输出 21。


输入样例 2

16 4 12
3
10
13
10
19
9
12
16
11
2
19
9
13
2
13
19

输出样例 2

164

准备 11 个箱子,将它们分别装入 1、3、1、1、3、1、1、2、1、1、1 个橙子,可以得到装箱的最小总成本。


输入样例 3

16 6 14
19
7
2
15
17
7
14
12
3
14
5
10
17
20
19
12

输出样例 3

177

输入样例 4

10 1 1000000000
1
1
1
1
1
1
1
1
1
1

输出样例 4

10000000000

请注意,答案可能超出 32 位带符号整数的范围。