Ctrl K

Порядок через шаг

Сложная
Вдоль дороги стоят столбики, их высоты записаны в массиве heights длины n. Дано целое число stride. Ряд считается упорядоченным с шагом stride, если для каждого i от stride до n - 1 выполняется heights[i - stride] ≤ heights[i]. Например, ряд [5, 2, 6, 2, 7] упорядочен с шагом 2 (5 ≤ 6 ≤ 7 и 2 ≤ 2), но не с шагом 1. За одну операцию можно заменить высоту любого столбика на любое целое положительное число. Верните наименьшее число операций, после которого ряд станет упорядоченным с шагом stride.
Пример 1
heights=[3, 8, 1, 9, 2, 10], stride=2 → 1

Цепочка позиций 0, 2, 4 — это [3, 1, 2]: достаточно заменить 3, например, на 1. Цепочка 1, 3, 5 — [8, 9, 10] — уже не убывает. Итого 1 замена.

Пример 2
heights=[4, 3, 2, 1], stride=1 → 3

При шаге 1 весь ряд должен не убывать. Оставить на месте можно только один столбик, остальные три придётся заменить.

Пример 3
heights=[2, 1, 2], stride=3 → 0

Шаг больше любой разницы позиций, сравнивать нечего — менять ничего не нужно.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • 1 ≤ heights[i] ≤ 10⁹
  • 1 ≤ stride ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОбщая медиана двух массивов СложнаяМинимум в сдвинутом массиве с повторами СложнаяРамка вокруг кляксы СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе Сложная
загружаем Python…
Вход
heights=[3, 8, 1, 9, 2, 10], stride=2
Ожидается
1

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