Ctrl K

Отрезки с маленьким произведением

Средняя
Дан массив положительных целых чисел values и порог limit. Отрезок — это непустая последовательность подряд идущих элементов массива. Посчитайте, у скольких отрезков произведение всех элементов **строго меньше** limit. Отрезки с одинаковыми значениями, но на разных позициях считаются разными. Решение, перебирающее все отрезки, работает за O(n²) — попробуйте уложиться в O(n).
Пример 1
values=[3, 4, 2, 10], limit=30 → 8

Подходят [3], [4], [2], [10], [3, 4] (12), [4, 2] (8), [2, 10] (20) и [3, 4, 2] (24) — всего 8. У [4, 2, 10] произведение 80, это уже много.

Пример 2
values=[7, 7], limit=7 → 0

Даже одиночная 7 не меньше порога 7, так что ответ 0.

Пример 3
values=[1, 1, 1], limit=2 → 6

Произведение любого отрезка равно 1 < 2, а отрезков у массива длины 3 ровно 6.

Ограничения
  • 1 ≤ len(values) ≤ 3·10⁴
  • 1 ≤ values[i] ≤ 1000
  • 0 ≤ limit ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый короткий рывок СредняяСамая длинная серия единиц с k правками СредняяСнять с краёв ровно столько СредняяПодравнять числа прибавлением СредняяКовёр на окрашенные отрезки Средняя
загружаем Python…
Вход
values=[3, 4, 2, 10], limit=30
Ожидается
8

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 123 теста на сервере, включая скрытые.