Ctrl K

Компания в одном ряду

Сложная
Вы с друзьями пришли в кино, но билеты достались вразнобой. Ряд описан массивом seats: seats[i] = 1, если на месте i сидит кто-то из вашей компании, и 0, если там сидит посторонний зритель. За один ход двое людей на соседних местах меняются местами. Найдите наименьшее число ходов, после которого хотя бы k человек из компании сидят подряд, без промежутков.
Пример 1
seats=[0, 1, 0, 1, 1, 0, 1], k=3 → 1

Друзья сидят на местах 1, 3, 4 и 6. Достаточно одного хода: друг с места 1 меняется с соседом на месте 2, и места 2, 3, 4 заняты своими.

Пример 2
seats=[1, 0, 0, 1, 0, 0, 1], k=3 → 4

Удобнее всего собрать всех на местах 2, 3, 4: левому другу нужно два хода вправо, правому — два хода влево, итого 4.

Пример 3
seats=[1, 1, 0, 1], k=2 → 0

Двое друзей уже сидят рядом на местах 0 и 1 — ходы не нужны.

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

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