测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A1998. 象棋比赛

编程题 普及-

题目描述

有 $N$ 个人要参加国际象棋比赛,该比赛要进行 $K$ 场对弈。每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。

在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。每个人最多只能用一次黑色的棋子和一次白色的棋子。为增加比赛的可观度,观众希望 $K$ 场对弈中双方的等级差的总和最小。

比如有 $7$ 个选手,他们的等级分别是 $30,17,26,41,19,38,18$,要进行 $3$ 场比赛。最好的安排是选手 $2$ 对选手 $7$,选手 $7$ 对选手 $5$,选手 $6$ 对选手 $4$。此时等级差的总和等于 $(18-17)+(19-18)+(41-38)=5$ 达到最小。

输入格式

第一行两个正整数 $N,K$。

接下来有 $N$ 行,第 $i$ 行表示第 $i-1$ 个人等级。

输出格式

在第一行输出最小的等级差的总和。

输入输出样例

输入 #1
7 3
30
17
26
41
19
38
18
输出 #1
5

说明/提示

### 数据范围及约定

- 在 $90\%$ 的数据中,$1 \le N \le 3000$;
- 在 $100\%$ 的数据中,$1 \le N \le 100000$。

保证所有输入数据中等级的值小于 $10^9$,$1 \le K \le N-1$。
上一题 去做题 下一题