Контест Junior Лямбды и функциональные объекты обновлено

Конвейер фильтров из лямбд

Условие

Дан массив чисел и список фильтров. Число проходит конвейер, если удовлетворяет всем фильтрам. Выведите количество прошедших и их сумму.

Фильтры:

  • gt v: число больше v; lt v: меньше v;
  • mod m r: остаток от деления на m равен r (математический остаток, от 0 до m − 1, в том числе для отрицательных чисел);
  • even: чётное;
  • pow2: положительная степень двойки (1, 2, 4, ...).

Соберите фильтры в std::vector<std::function<bool(long long)>>, создавая лямбды с захватом параметров.

Ввод: n (1 ≤ n ≤ 5000), массив (|aᵢ| ≤ 10⁹), k (0 ≤ k ≤ 10), затем k фильтров.

Вывод: количество и сумма через пробел.

Пример 1

Ввод:

6
-7 -4 1 2 8 9
2
mod 3 2
lt 5

Вывод:

3 -9

Пример 2

Ввод:

3
1 2 3
0

Вывод:

3 6

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.