0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderログ:0055 - ABC 067 B

Posted at

問題

問題文

すぬけくんは $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 の解説公式解説

回答と同じ方針でした。

リンク

前後の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?