公式
C - 教室のエアコン配備 / Air Conditioning Installation in Classrooms 解説
by
C - 教室のエアコン配備 / Air Conditioning Installation in Classrooms 解説
by
kyopro_friends
最大値を小さくしたいので、値の大きなものから順に \(0\) に置き換えていくのが最適です。 \(D\) の要素のうち値が大きい方から \(M\) 番目までは \(0\) に置き換えることができるので、求める答えは大きい方から \(M+1\) 番目です。
\(N=M\) のケースでの配列の範囲外アクセスに注意してください。予め \(D\) に \(0\) を 1つ追加しておくことで、場合分けをなくすことができます。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<int>a(n+1);
for(int i=0; i<n; i++) cin >> a[i];
a[n] = 0;
sort(a.rbegin(), a.rend()); // 降順ソート
cout << a[m] << endl;
}
実装例 (Python)
N, M = map(int, input().split())
A = list(map(int, input().split()))
A.append(0)
A.sort(reverse=True) # 降順ソート
print(A[M])
投稿日時:
最終更新:
