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 翻译