問題
問題文
すぬけくんは $N$ 本の棒を持っています。$i$ 番目の棒の長さは $l_i$ です。
すぬけくんは $K$ 本の棒を選んでつなげて、ヘビのおもちゃを作りたいです。
ヘビのおもちゃの長さは選んだ棒たちの長さの総和で表されます。ヘビのおもちゃの長さとしてありうる長さのうち、最大値を求めなさい。
制約
・$1 \le K \le N \le 50$
・$1 \le l_i \le 50$
・$l_i$ は整数
収録されている問題セット
回答
回答1 (AC)
おもちゃの長さは選んだ棒の長さの総和になるので、おもちゃの長さを最大にするには長い方から $K$ 本を選べば良いです。処理としては、それぞれの棒の長さを配列 l() に受け取った後、長い順 (降順) にソートし、最初の k 本を選んだときの長さの総和を出力すれば良いでしょう。コードは以下のようになりました。
abc067b-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> l(n);
for ( int i=0; i<n; i++ ) {
cin >> l.at(i);
}
sort(l.rbegin(),l.rend());
int sum = 0;
for ( int i=0; i<k; i++ ) {
sum += l.at(i);
}
cout << sum << endl;
}
調べたこと
AtCoder の解説 → 公式解説
回答と同じ方針でした。