Ctrl K

Игроки через одного

Лёгкая
В очереди стоят игроки: names[i] — имя, teams[i] — команда (0 или 1). Все имена разные. Нужно вызвать на поле как можно больше игроков, сохраняя порядок очереди (пропускать можно любых), так, чтобы у любых двух вызванных подряд игроков команды были разные. Верните имена вызванных игроков по порядку. Если подходящих наборов максимальной длины несколько, выберите тот, где игроки вызываются как можно раньше: на каждом шаге берите самого раннего подходящего игрока.
Пример 1
names=["ann", "bob", "cid", "dan", "eve"], teams=[1, 1, 0, 1, 1] → ['ann', 'cid', 'dan']

Больше трёх игроков с чередованием не выбрать. Среди вариантов (ann/bob, затем cid, затем dan/eve) берём самых ранних: ann, cid, dan.

Пример 2
names=["x", "y", "z"], teams=[0, 1, 0] → ['x', 'y', 'z']

Команды уже чередуются, берём всех.

Пример 3
names=["solo", "duo"], teams=[0, 0] → ['solo']
Ограничения
  • 1 ≤ len(names) = len(teams) ≤ 100
  • teams[i] равно 0 или 1
  • 1 ≤ len(names[i]) ≤ 10, строчные латинские буквы
  • Все имена различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНитка бус без повторов СредняяСлово по таблице префиксов СложнаяРяд по подъёмам и спадам ЛёгкаяПодходит ли строка под шаблон СложнаяМеньше всего прыжков до конца Средняя
загружаем Python…
Вход
names=["ann", "bob", "cid", "dan", "eve"], teams=[1, 1, 0, 1, 1]
Ожидается
['ann', 'cid', 'dan']

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