Upper bound (上限)
ソート済みの n
個の整数からなる配列が与えられたとき、q
件のクエリに答えることが求められます。各クエリの内容は「与えられたリストで、x
よりも大きい最初の要素は何か?」というものです。
入力
最初の行には、n
(2 ≤ n ≤ ) と q
(1 ≤ q ≤ ) の 2 つの整数が与えられます。
次の行には、昇順に並んだ n
個の整数 ( ≤ ≤ ) が空白区切りで与えられます。
最後の行には、q
個のクエリ ( ≤ < ) が空白区切りで与えられます。
出力
プログラムは q
行を出力します。各行には、対応するクエリに対する答えを出力してください。
例
入力 | 出力 |
---|---|
6 3 2 7 9 10 20 30 8 20 1 | 9 30 2 |
Hint
古典的な二分探索の実装では、[l; r)
という範囲を用い、l
は含み、r
は含みません。しかし、場合によっては (l; r]
のように l
を除外し、r
を含む形で実装したいこともあります。その場合、l
、r
、mid
の計算方法を少し変更する必要があります。
Constraints
Time limit: 5 seconds
Memory limit: 512 MB
Output limit: 1 MB