問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
あなたは模擬試験の成績を管理するシステムを開発しています。N 人分の得点が低い順に整数列 A_1, A_2, ..., A_N として与えられます(A_1 ≦ A_2 ≦ ... ≦ A_N)。「X 点を超える得点が最初に登場するのは何人目か」を調べるため、Python の bisect_right または C++ の upper_bound を使って、A_i > X を満たす最小の i(先頭を 1 番目とする)を出力してください。そのような i が存在しない場合(全員の得点が X 点以下の場合)は N+1 を出力してください。
Python の bisect_right(A, X) は、昇順リスト A の中で X より大きくなる最小のインデックス(先頭を 0 番目とする)を返します。すべての要素が X 以下の場合は len(A)(= N)を返します。出力するときは 1-indexed にするため、結果に 1 を足すことに注意してください。全員の得点が X 点以下のときは bisect_right の返り値が N になるので、1 を足すと自然に N+1 になります。
C++ の upper_bound(A.begin(), A.end(), X) も同様に、X より大きい最初の位置へのイテレータを返します。
入力は以下のフォーマットで与えられます。
N X
A_1 A_2 ... A_N
A_i > X を満たす最小の i(先頭を 1 番目とする)を 1 行に出力してください。そのような i が存在しない場合は N+1 を出力してください。出力の最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 10000
・1 ≦ A_i ≦ 1000000000
・1 ≦ X ≦ 1000000000
・A は昇順に並んでいる(A_1 ≦ A_2 ≦ ... ≦ A_N)
5 55
40 55 55 70 80
4
3 100
60 65 70
4