ABC B067 – Snake Toy
問題
すぬけくんはN本の棒を持っています。 i番目の棒の長さはliです。
すぬけくんはK本の棒を選んでつなげて、ヘビのおもちゃを作りたいです。
ヘビのおもちゃの長さは選んだ棒たちの長さの総和で表されます。 ヘビのおもちゃの長さとしてありうる長さのうち、最大値を求めなさい。
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main () {
int N, K;
cin >> N >> K;
int snake[N];
for(int i = 0; i < N; i++){
int a;
cin >> a;
snake[i] = a;
}
sort(snake, snake + N);
reverse(snake, snake + N);
int ans;
for(int i = 0; i < K; i++){
ans += snake[i];
}
cout << ans << endl;
}
特に難しい事はありません。まずは、蛇の長さを配列snakeに格納します。
次に、sort関数で昇順に並べた後に、reverse関数で降順にし、先頭から値が多い順に並ぶようにします。これはしなくてもいいですが、自分はこちらの方がわかりやすいので、降順にしました。
そして、K回、forを回して、足し合わせたものを出力します。
今回、初めて、配列に対して、sort関数やreverse関数を使った気がします。C++だと、文字列や配列、ベクターに対して、sortをかける時に記述の仕方が違うので、めんどくさいですね。