lower_bound(a+l, a+r, x) - a (a は 小さい順にソートされている配列)
l≤i≤r−1 の中で、x≤ai となるような最小の i(ポインタ) の値を返す
計算量は O(log N)
ソートは O(N log N)
sort(a, a + N);
cout << lower_bound(a, a + N, x) - a << endl; //x以下の個数
ソート済みの配列に対して~以上の数が初めて現れる場所はlower_bound
ソート済みの配列に対して~より大きいの数が初めて現れる場所はupper_bound