Time Limit: 2 sec / Memory Limit: 1024 MB
配点: 100 点
問題文
パ研という部活には、N 人の部員がいます。それぞれの部員には、年齢順に 1, 2, 3, ..., N と番号が付けられています。
部員 i の競技プログラミングの実力は A_i です。
競技プログラミングではチーム戦が多くあります。パ研では、「チームの戦闘力」を、チームで最も実力が低い人の実力の値、と定義しました。
例えば、実力が 5, 4, 10 の人がいる 3 人チームの戦闘力は、4 となります。
ある日突然、2020 年に開催される東京オリンピックの種目に、「競技プログラミング」が追加されました。この大会には、ちょうど D 人で構成されるチームで出場しなければなりません。
パ研の部員全員が、代表選抜に応募したいです。その為、パ研はチーム分けを以下のような方法で行うことにしました。
- 出来るだけ多くの人が、代表選抜に応募できることにする。
- その中で、チームの戦闘力の合計 が最大になるようにチーム編成をする。
- ただし、同じ人が複数のチームに入ってはならない。
さて、チームの戦闘力の合計はいくつになるでしょうか?
制約
- N は 1 以上 1 \ 000 以下の整数
- D は 1 以上 10 以下の整数
- A_i は 1 以上 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 となります。
- 部員 1 と 4 で構成されるチーム: 戦闘力は min(20, 24) = 20
- 部員 2 と 3 で構成されるチーム: 戦闘力は 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 人出てしまいます。