二分探索ドリルのサムネイル
X 以上の最小値の位置 F#(Beta)編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

フリマアプリで、ある商品カテゴリーの出品一覧を検索する機能を作っています。このカテゴリーには N 件の出品があり、i 番目の出品の価格は A_i 円です。価格は安い順(昇順)に並んでいます(A_1 ≦ A_2 ≦ ... ≦ A_N)。

ユーザーが「X 円以上の出品だけを見たい」と価格の下限を指定して検索したとき、検索結果の先頭に表示されるのは、価格が X 円以上になる最初の出品です。A_i ≧ X を満たす最小の i(先頭を 1 番目とする)を二分探索で求め、出力してください。そのような i が存在しない場合(A のすべての要素が X より小さい場合)は N + 1 を出力してください。

入力される値

入力は以下のフォーマットで与えられます。

N X
A_1 A_2 ... A_N


・1 行目には整数 N と整数 X が空白区切りで与えられます。

・2 行目には N 個の整数 A_1, A_2, ..., A_N が空白区切りで与えられます。A は昇順に並んでいます。

・入力は合計で 2 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

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)

入力例1

5 800
300 600 900 1200 1500

出力例1

3

入力例2

3 1000
100 200 300

出力例2

4

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. 二分探索ドリル(言語選択)
  4. 問題一覧 F#(Beta)編
  5. X 以上の最小値の位置 F#(Beta)編
ページの先頭へ戻る