Ctrl K

Водящие и убегающие

Средняя
Дети играют в салки, стоя в одну линию. Массив players описывает их по порядку: 1 — водящий, 0 — убегающий. Дано также число reach. Водящий на позиции i может поймать одного убегающего, чья позиция j удовлетворяет условию |i - j| ≤ reach. Каждый водящий ловит не больше одного игрока, и каждого убегающего можно поймать только один раз. Верните наибольшее число убегающих, которых могут поймать водящие.
Пример 1
players=[1, 0, 0, 1, 0, 1], reach=1 → 3

Водящий 0 ловит игрока 1, водящий 3 — игрока 2, водящий 5 — игрока 4. Пойманы все трое.

Пример 2
players=[0, 0, 1, 1], reach=1 → 1

Водящий 2 может поймать игрока 1. До водящего 3 ближайший убегающий находится на расстоянии 2, а это дальше reach.

Пример 3
players=[1, 1], reach=2 → 0

Убегающих нет, ловить некого.

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

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