sort済みでない配列にlower_bound(upper_bound)をすると何が得られる?
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<ll> V = {1, 9, 1, 9, 1, 9, 1, 9};
// 1 3 5 7 のどこかのindexがひっかかるはず。
auto it = lower_bound(V.begin(), V.end(), 2);
cout << it - V.begin();
}
Q. 出力は何でしょう?
a. 1かな?
b. 3かな?
c. 5かな?
d. 7かな?
ヒント
出力
7
A. 7でした。
なんでや!1じゃないんかい!
もう少し引用
lower_boundやupper_boundは前提としてsort済み配列に使用しよう。
二分探索なので、探索対象になった値がたまたま閾値未満であれば右に進むし、閾値以上なら左に進むだけ。よく考えればそう。