20template <
typename T> int64_t bin_search(std::vector<T> arr, int64_t left, int64_t right, T x) {
21 while (left <= right) {
22 int64_t mid = left + (right - left) / 2;
44template <
typename T> int64_t lower_bound(std::vector<T> arr, int64_t left, int64_t right, T x) {
45 int64_t result = right, mid = 0;
48 while (left <= right) {
49 mid = left + (right - left) / 2;
70template <
typename T> int64_t upper_bound(std::vector<T> arr, int64_t left, int64_t right, T x) {
71 int64_t result = right, mid = 0;
74 while (left <= right) {
75 mid = left + (right - left) / 2;