Ctrl K

Словесная дуэль

Сложная
Аня и Боря играют в слова. У Ани есть список слов first, у Бори — second; оба списка упорядочены по алфавиту, и все слова в двух списках вместе различны. Игроки ходят по очереди, выкладывая по одному слову из своего списка. Новое слово должно **перебивать** последнее выложенное слово w: - оно идёт после w в словарном (лексикографическом) порядке; - его первая буква либо совпадает с первой буквой w, либо стоит в алфавите сразу за ней. Например, dog перебивает cat и dig, но не перебивает apple (между a и d слишком далеко) и door (оно идёт позже dog). Кто не может сделать ход, проигрывает. Начинает Аня, и первым ходом она обязана выложить самое раннее по алфавиту слово из своего списка. Верните True, если Аня выигрывает при лучшей игре обоих, и False иначе.
Пример 1
first=['cat', 'dove'], second=['cow'] → True

Аня ходит cat, Боря перебивает словом cow (та же буква и дальше по алфавиту), Аня отвечает dove (буква d идёт сразу за c). Боре ходить нечем — Аня победила.

Пример 2
first=['bell', 'cup'], second=['bird', 'dart'] → False

bell → bird → cup → dart. После dart у Ани нет слов, и она проигрывает.

Пример 3
first=['moon'], second=['apple', 'kite'] → True

Оба слова Бори начинаются с букв раньше m, поэтому перебить moon он не может.

Ограничения
  • 1 ≤ len(first), len(second) ≤ 10⁵
  • Слова непустые и состоят из строчных латинских букв
  • Каждый список упорядочен по алфавиту
  • Все слова из двух списков вместе различны
  • Суммарная длина всех слов не больше 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРяд по подъёмам и спадам ЛёгкаяОкруглить цены до нужной суммы СредняяСредний мешок СредняяОдни призы, разные вкусы СредняяСчастливый билет с пропусками Средняя
загружаем Python…
Вход
first=['cat', 'dove'], second=['cow']
Ожидается
True

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