#P0203. 运动会

运动会

题目描述

学生会正在为运动节的接力赛做准备。

学生会由 nn 名成员组成。他们将在比赛中依次跑步,第 ii 位成员的速度为 sis_i

比赛一共分 nn 个阶段,每个阶段都会派出一名未参赛的成员参赛。第 ii 阶段的 差异值 did_i 是前 ii 名参赛成员中最大跑步速度和最小跑步速度之间的差异。具体来说,如果 aia_i 表示参加比赛的第 ii 名成员的速度,则 di=max(a1,a2,,ai)min(a1,a2,,ai)d_i = \max(a_1, a_2, \ldots, a_i) - \min(a_1, a_2, \ldots, a_i)

你希望使 nn 个阶段的差异值总和(即 d1+d2++dnd_1 + d_2 + \ldots + d_n)最小。为了实现这一目标,你可以改变成员跑步的顺序。

求:能够达到的差异值总和最小是多少?

输入格式

第一行包含一个整数 nn1n20001 \le n \le 2000)— 学生会成员的数量。

第二行包含 nn 个整数 s1,s2,,sns_1, s_2, \ldots, s_n1si1091 \le s_i \le 10^9)— 成员的跑步速度。

输出格式

输出一个整数 _ 调整成员参赛的顺序后的最小差异值总和 d1+d2++dnd_1 + d_2 + \ldots + d_n

样例

3
3 1 2
3
1
5
0
6
1 6 3 3 6 3
11
6
104 943872923 6589 889921234 1000000000 69
2833800505

说明/提示

样例解释

在第一个测试用例中,我们可以选择让第三名成员先跑,然后是第一名成员,最后是第二名成员。因此a1=2a_1 = 2a2=3a_2 = 3a3=1a_3 = 1。我们有:

  • d1=max(2)min(2)=22=0d_1 = \max(2) - \min(2) = 2 - 2 = 0
  • d2=max(2,3)min(2,3)=32=1d_2 = \max(2, 3) - \min(2, 3) = 3 - 2 = 1
  • d3=max(2,3,1)min(2,3,1)=31=2d_3 = \max(2, 3, 1) - \min(2, 3, 1) = 3 - 1 = 2

结果总和为d1+d2+d3=0+1+2=3d_1 + d_2 + d_3 = 0 + 1 + 2 = 3。可以证明无法达到更小的值。

在第二个测试用例中,唯一可能的重新排列是 d1=0d_1 = 0,因此最小可能结果是00