ABC
B - Japanese Cursed Doll

B - Japanese Cursed Doll

解説

問題 (opens in a new tab)

髪の長さが TT 以上の人が PP 人以上になるのは、最初の長さが PP 番目に長い人の髪の長さが TT 以上になるとき。

PP 番目の人の最初の長さを ll とすると、 llTT 以上の場合は 00 を出力し、そうでない場合は TlT-l を出力する。if文で場合分しても良いが、max関数を使うと簡潔に書ける。

C++はsort関数の第三引数にgreater<int>()を渡すと降順にソートできる。

提出コード

  • Go
func main() {
	var n, t, p int
	scanIntVariables(&n, &t, &p)
	L := readInts()
	sort.Slice(L, func(i, j int) bool {
		return L[i] > L[j]
	})
	writeLine(max(0, t-L[p-1]))
}
  • C++
int main() {
    int n, t, p; cin >> n >> t >> p;
    vector<int> L(n); rep(i, 0, n) cin >> L[i];
    sort(L.begin(), L.end(), greater<int>());
    cout << max(0, t - L[p - 1]) << endl;
}