Ctrl K

Строгий подъём из запасных чисел

Сложная
Дан ряд чисел row и набор запасных чисел spares. За одну замену можно взять любой элемент row и записать вместо него любое число из spares. Запасные числа не расходуются: одно и то же можно брать сколько угодно раз. Нужно, чтобы row стал строго возрастающим — каждое следующее число больше предыдущего. Верните наименьшее число замен (возможно, 0). Если добиться этого нельзя, верните -1.
Пример 1
row=[2, 9, 4, 8], spares=[5, 3, 1] → 1

Заменяем 9 на запасное 3: [2, 3, 4, 8] строго возрастает. Одной замены достаточно.

Пример 2
row=[6, 5, 4], spares=[7, 1, 8] → 2

Ставим 1 вместо 6 и 7 вместо 4: получается [1, 5, 7]. Одной заменой не обойтись.

Пример 3
row=[3, 3, 3], spares=[3] → -1

Все числа, и в ряду, и в запасе, равны 3, поэтому строго возрастающий ряд из трёх чисел не собрать.

Ограничения
  • 1 ≤ len(row) ≤ 2000
  • 1 ≤ len(spares) ≤ 2000
  • 0 ≤ row[i], spares[j] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКоробка в коробке СложнаяСамый выгодный набор подработок СложнаяСамые выгодные выступления СложнаяПодъём по строкам и столбцам СложнаяСлова, спрятанные в тексте Средняя
загружаем Python…
Вход
row=[2, 9, 4, 8], spares=[5, 3, 1]
Ожидается
1

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