#include <cstdio>
#include <algorithm>

using namespace std;

int main()
{
  int x = 4, a[] = {1, 3, 5, 2, 4};

  sort(a, a + 5); // перед тем, как применять бинпоиск массив нужно отсортировать

  // lower_bound ищет за O(logN) первый элемент a[i] в массиве a : a[i] >= x
  int i = lower_bound(a, a + 5, x) - a; // i = 3, a[i] = 4

  int j = lower_bound(a, a + 5, 10) - a; // j = 5, a[j] = не определено
  int k = lower_bound(a, a + 5, 0) - a;  // k = 0, a[k] = 1, что >= 0

  printf("i = %d, a[i] = %d, j = %d, k = %d\n", i, a[i], j, k);
  return 0;
}