B - チーム戦 (Teamwork) Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 100

問題文

パ研という部活には、N 人の部員がいます。それぞれの部員には、年齢順に 1, 2, 3, ..., N と番号が付けられています。
部員 i の競技プログラミングの実力は A_i です。
競技プログラミングではチーム戦が多くあります。パ研では、「チームの戦闘力」を、チームで最も実力が低い人の実力の値、と定義しました。
例えば、実力が 5, 4, 10 の人がいる 3 人チームの戦闘力は、4 となります。

ある日突然、2020 年に開催される東京オリンピックの種目に、「競技プログラミング」が追加されました。この大会には、ちょうど D 人で構成されるチームで出場しなければなりません。
パ研の部員全員が、代表選抜に応募したいです。その為、パ研はチーム分けを以下のような方法で行うことにしました。

  • 出来るだけ多くの人が、代表選抜に応募できることにする。
  • その中で、チームの戦闘力の合計 が最大になるようにチーム編成をする。
  • ただし、同じ人が複数のチームに入ってはならない。

さて、チームの戦闘力の合計はいくつになるでしょうか?

制約

  • N1 以上 1 \ 000 以下の整数
  • D1 以上 10 以下の整数
  • A_i1 以上 4 \ 208 以下の整数
  • 全く同じ実力の部員はいない

入力

入力は以下の形式で標準入力から与えられます。

N D
A_1 A_2 A_3 ... A_N

出力

問題文中の方法に従ってチーム編成をした時、チームの戦闘力の合計はいくつか、整数で一行に出力してください。

小課題

小課題 1 [25 点]

  • N = D を満たす.

小課題 3 [75 点]

  • 追加の制約はない.

入力例 1

4 2
20 18 12 24

出力例 1

32

部員の実力は、部員 1 から順に {20, 18, 12, 24} です。
チームを以下のように決めると、戦闘力の合計が 20 + 12 = 32 となります。

  • 部員 14 で構成されるチーム: 戦闘力は min(20, 24) = 20
  • 部員 23 で構成されるチーム: 戦闘力は min(18, 12) = 12

入力例 2

5 5
8 6 9 1 20

出力例 2

1

N = D なので、1 チームしか作れません。また、1 チーム編成するとき、過不足なくどの部員も代表選抜に参加できます。
そのため、戦闘力の合計は min(8, 6, 9, 1, 20) = 1 となります。


入力例 3

6 8
1268 1755 2315 1071 1229 1101

出力例 3

0

N < D なので、1 チームも作れません。そのため、戦闘力の合計は 0 となります。


入力例 4

8 3
1345 1355 1390 1285 1171 936 1272 855

出力例 4

2516

8 人から 3 人チーム 2 つを作るので、あぶれてしまう人がどうしても 2 人出てしまいます。