Контест Middle Шаблоны и концепты обновлено
Один бинарный поиск на все случаи: предикат как параметр шаблона
Условие
Дан отсортированный по неубыванию массив и запросы четырёх видов:
ge x: наименьший элемент≥ x;gt x: наименьший элемент> x;le x: наибольший элемент≤ x;cnt x: сколько разxвстречается.
Если нужного элемента нет, выведите none. Реализуйте одну шаблонную функцию template <class It, class Pred> It first_true(It first, It last, Pred p) (первая позиция, где монотонный предикат истинен) и выразите через неё все запросы с помощью лямбд.
Ввод: n (1 ≤ n ≤ 1500), массив, затем q (1 ≤ q ≤ 1500) и запросы. Значения по модулю до 10⁹.
Вывод: ответ на каждый запрос с новой строки.
Пример 1
Ввод:
5
1 3 3 5 9
4
ge 4
gt 3
le 0
cnt 3
Вывод:
5
5
none
2
Пример 2
Ввод:
1
7
4
ge 8
gt 6
le 7
cnt 1
Вывод:
none
7
7
0
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.