Ctrl K

Склейка соседей с потолком

Средняя
Дан массив неотрицательных целых чисел values и число cap. За одну операцию можно взять два соседних элемента a и b, у которых a · b ≤ cap, и заменить их одним элементом, равным a · b. Операций можно сделать сколько угодно, в том числе ни одной. Например, при cap = 6 массив [1, 3, 2, 4] можно превратить в [3, 2, 4] или в [1, 6, 4], но не в [1, 3, 8]. Верните наименьшую длину, до которой можно сократить массив.
Пример 1
values=[2, 5, 1, 3, 4], cap=12 → 2

[2, 5, 1, 3, 4] → [10, 1, 3, 4] → [10, 3, 4] → [10, 12]. Слить 10 и 12 уже нельзя: 120 > 12.

Пример 2
values=[4, 0, 9, 9], cap=1 → 1

Ноль сливается с любым соседом в ноль, поэтому весь массив можно свернуть в одно число.

Пример 3
values=[5, 7], cap=30 → 2

5 · 7 = 35 > 30, сливать нечего.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 0 ≤ values[i] ≤ 10⁹
  • 1 ≤ cap ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМеньше всего прыжков до конца СредняяДобраться до последней клетки СредняяСколько угодно сделок СредняяСамая длинная «качель» СредняяОтменить как можно меньше встреч Средняя
загружаем Python…
Вход
values=[2, 5, 1, 3, 4], cap=12
Ожидается
2

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