Попробуй так: from itertools import pairwise, starmap
a = map(int, input().split())
print(sum(map((1).__xor__, map((1).__and__, starmap(int.__and__, filter(lambda t: int.__lt__(*t), pairwise(a))))))) Пример входных данных: 1 2 3 4 5 6 Все пары удовлетворяют условию, так что выведено будет 5.
Другой пример: 1 2 3 44 5 6 У всех пар произведение чётно, но 44 > 5, поэтому выведено будет 4.
А если ввести такое: 1 3 5 7 9 11 То все произведения нечётны, и будет выведено 0.
А по коду:
pairwise преобразует последовательность в последовательность пар соседних элементов.
Фильтруем в ней только те пары, где первый элемент меньше второго (вот здесь не хватает функции starfilter, прямо хоть самому её пиши).
starmap передаёт в указанную функцию кортежи, распакованные в отдельные элементы (например, для кортежа (5, 6) будет вызвано целочисленное побитовое умножение int.__and__(5, 6) или попросту 5 & 6).
Почему используем побитовое умножение, а не обычное? Потому что нам надо проверить только младший бит произведения (= его остаток от деления на 2), а он зависит только от младших битов множителей. И побитовое умножение быстрее полноценного.
А дальше выделяем этот самый младший бит, инвертируем его (так что для чётных чисел в последовательности будет 1, а для нечётных - 0), и суммируем последовательность из нулей и единиц. Результатом будет искомое количество пар.
Можно разложить этот код на последовательные операции: from itertools import pairwise, starmap
a = map(int, input().split())
pwa = pairwise(a)
lta = filter(lambda t: int.__lt__(*t), pwa)
prda = starmap(int.__and__, lta)
evena = map((1).__xor__, map((1).__and__, prda))
print(sum(evena))