Ctrl K

Разбить числа до порядка

Сложная
Дан массив положительных целых чисел values. За одно действие можно взять любой элемент и заменить его на два положительных целых числа, которые в сумме дают этот элемент; новые числа встают на его место в том же порядке, в каком вы их записали. Например, из [5, 9] можно получить [5, 4, 5] или [2, 3, 9]. Найдите наименьшее число таких действий, после которых массив станет неубывающим (каждый элемент не больше следующего).
Пример 1
values=[4, 10, 3] → 4

Тройку в конце не трогаем. 10 придётся разбить хотя бы на 4 части не больше 3; выгоднее всего 2, 2, 3, 3 (три разбиения) — так самая левая часть получается наибольшей. Стоящая впереди 4 всё ещё больше 2, поэтому её делим на 2 и 2 (одно разбиение). Итого 3 + 1 = 4.

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

Массив уже не убывает, разбивать ничего не нужно.

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

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