けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

鉄則本 B11 - Binary Search 2 (4Q, ★3)

lower_bound() の練習!!

問題概要

長さ  N の配列  A_{1}, A_{2}, \dots, A_{N} が与えられる。この配列に対して  Q 回のクエリに答えよ。

【クエリ】
整数  X が与えられるので、配列  A の中に  X より小さい要素が何個あるかを求めよ。

制約

  •  1 \le N, Q \le 10^{5}

解法

github.com

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, Q;
    cin >> N;
    vector<int> A(N);
    for (int i = 0; i < N; ++i) cin >> A[i];
    sort(A.begin(), A.end());
    
    cin >> Q;
    while (Q--) {
        int X;
        cin >> X;
        int num = lower_bound(A.begin(), A.end(), X) - A.begin();
        cout << num << endl;
    }
}