問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
あなたは家電量販店の店員です。あるカテゴリの商品の価格一覧が、安い順に並んだ整数列 A_1, A_2, ..., A_N(円)として与えられます。
お客さんから「予算は X 円以上で探したい」と言われたので、価格が X 円以上になる商品が、安い順に数えて何件目に初めて登場するかを調べてください。
Python の bisect_left(C++ では lower_bound)を使って、A_i ≧ X を満たす最小の i(先頭を 1 件目とする)を出力してください。そのような商品が 1 つも無い場合(すべての商品が X 円未満の場合)は N + 1 を出力してください。
Python の bisect_left(A, X) は、昇順のリスト A の中で X 以上となる最小の位置を返しますが、この位置は先頭を 0 番目として数えた値です。今回は先頭を 1 件目として数えたいので、bisect_left の返り値に 1 を足したものを出力してください。すべての要素が X 未満のとき bisect_left は N を返すので、1 を足すと自然に N + 1 になります。
C++ の lower_bound(A.begin(), A.end(), X) も同じ位置を指すイテレータを返します。A.begin() との距離が 0 始まりの位置になるので、Python と同様に 1 を足してください。
入力は以下のフォーマットで与えられます。
N X
A_1 A_2 ... A_N
価格が X 円以上になる商品が最初に登場する位置(先頭を 1 件目とする)を 1 行に出力してください。そのような商品が存在しない場合は N + 1 を出力してください。出力の最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 10000
・1 ≦ A_i ≦ 1000000000
・1 ≦ X ≦ 1000000000
・A は昇順に並んでいる(A_1 ≦ A_2 ≦ ... ≦ A_N)
6 6
1 3 5 7 9 11
4
6 100
1 3 5 7 9 11
7