AT_pakencamp_2018_day2_b チーム戦 (Teamwork)
题目描述
パ研这个社团有 $N$ 名成员。每位成员按照年龄顺序被编号为 $1, 2, 3, \ldots, N$。
成员 $i$ 的竞赛编程实力为 $A_i$。
在竞赛编程中,经常会有团队赛。在パ研中,“团队的战斗力”被定义为团队中实力最弱成员的实力值。
例如,若一个 $3$ 人团队成员的实力分别为 $5, 4, 10$,那么该团队的战斗力为 $4$。
有一天,2020 年东京奥运会突然新增了“竞赛编程”这一项目。参赛队伍必须由恰好 $D$ 人组成。
パ研的所有成员都希望报名参加代表选拔。为此,パ研决定按照如下方式进行分组:
- 让尽可能多的人能够报名参加代表选拔。
- 在此基础上,使**所有团队的战斗力之和**最大化。
- 但同一个人不能加入多个团队。
请问,按照上述方法进行分组后,团队的战斗力之和最大是多少?
输入格式
输入通过标准输入按以下格式给出。
> $N$ $D$ $A_1$ $A_2$ $A_3$ ... $A_N$
输出格式
请输出按照题目描述的方法分组后,团队的战斗力之和的最大值,作为一个整数输出一行。
说明/提示
## 限制条件
- $N$ 是 $1$ 到 $1\,000$ 之间的整数。
- $D$ 是 $1$ 到 $10$ 之间的整数。
- $A_i$ 是 $1$ 到 $4\,208$ 之间的整数。
- 没有两名成员的实力完全相同。
## 子任务
子任务 $1$ [$25$ 分]
- 满足 $N = D$。
子任务 $3$ [$75$ 分]
- 无额外限制。
## 样例解释 1
成员的实力从 $1$ 号到 $4$ 号分别为 $20, 18, 12, 24$。如果按如下方式组队,可以使战斗力之和为 $20 + 12 = 32$。
- 由成员 $1$ 和 $4$ 组成一队:战斗力为 $min(20, 24) = 20$
- 由成员 $2$ 和 $3$ 组成一队:战斗力为 $min(18, 12) = 12$
## 样例解释 2
由于 $N = D$,只能组建 $1$ 支队伍。组队后,所有成员都能参加代表选拔。因此,战斗力之和为 $min(8, 6, 9, 1, 20) = 1$。
## 样例解释 3
由于 $N < D$,无法组建任何一支队伍。因此,战斗力之和为 $0$。
## 样例解释 4
从 $8$ 人中组建 $2$ 支 $3$ 人队伍,无论如何都会有 $2$ 人无法分到队伍中。
由 ChatGPT 4.1 翻译