В ассоциативном футболе (также известном как футбол) пенальти является второй мерой тай-брейка, которая может использоваться в матче, который не может закончиться вничью после дополнительного времени (т. Е. Сверхурочного футбольного матча).
В серии пенальти главный судья бросает монетку, чтобы определить, с какой целью произошла перестрелка, а затем бросает еще одну монету, чтобы определить, какая команда стартует первой. Однако единственное, что имеет отношение к этой проблеме, - это то, что происходит потом, описано ниже.
Каждая команда имеет 5 штрафных очков, доступных на старте, и штрафной балл 0-0. Если в какой-то момент оставшихся штрафов команды недостаточно для смены победившей в настоящее время команды, перестрелка прекращается.
Если оставшихся штрафных очков нет, но очки обеих команд равны, обе команды получают дополнительный штраф. Это повторяется до тех пор, пока очки не будут равны.
После остановки перестрелки команда с наибольшим штрафным счетом побеждает в игре.
Вызов
Ваша задача состоит в том, чтобы, учитывая два списка A
и B
определить, какие штрафные очки команда А и В забили соответственно, определить, представляют ли они действительный пенальти. Перестрелка действительна, если может быть достигнуто состояние, представленное входом, независимо от того, может ли быть определена команда-победитель. Обратите внимание, что вам, возможно, придется тестировать оба сценария (запуск команды A, запуск команды B), поскольку, если состояние, описанное во входных данных, достижимо хотя бы для одного сценария, входные данные действительны. Если длина списков различна, команда, представленная более длинным, начинается первой (у нее может быть только один элемент больше, чем у другого, и команда более короткого списка не может стартовать, так как тогда команда более длинного списка будет снимать два штрафа). подряд, так как более короткий список будет преждевременно исчерпан).
Подробные примеры
Вы можете перейти к разделу « Правила » ниже, это только для решения проблемы.
Предположим, вы получили этот перестрелку в качестве входных данных, где -
означает, что ни один гол не был забит и X
означает, что гол был забит (это недействительно):
Team A: - X X X X
Team B: - - - - X
Assuming team A starts first:
Team A: - (0 - 0) (max possible score 4 - 5)
Team B: - (0 - 0) (max possible score 4 - 4)
Team A: X (1 - 0) (max possible score 4 - 4)
Team B: - (1 - 0) (max possible score 4 - 3)
Team A: X (2 - 0) (max possible score 4 - 3)
Team B: - (2 - 0) (max possible score 4 - 2)
Team A: X (3 - 0) (max possible score 4 - 2)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team A is first.
Assuming team B starts first:
Team B: - (0 - 0) (max possible score 5 - 4)
Team A: - (0 - 0) (max possible score 4 - 4)
Team B: - (0 - 0) (max possible score 4 - 3)
Team A: X (1 - 0) (max possible score 4 - 3)
Team B: - (1 - 0) (max possible score 4 - 2)
Team A: X (2 - 0) (max possible score 4 - 2)
Team B: - (2 - 0) (max possible score 4 - 1)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team B stars first.
The input is invalid no matter which team starts first, so it's considered
invalid.
Напротив, вот правильный пример:
Team A: X X X
Team B: - - -
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: - (2 - 0) (max possible score 5 - 3)
Team A: X (3 - 0) (max possible score 5 - 3)
Team B: - (3 - 0) (max possible score 5 - 2)
It can be determined that team A wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
Другой пример, на этот раз с дополнительными штрафами:
Team A: X - X - - - X -
Team B: - X X - - - X X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: - (1 - 0) (max possible score 4 - 4)
Team B: X (1 - 1) (max possible score 4 - 4)
Team A: X (2 - 1) (max possible score 4 - 4)
Team B: X (2 - 2) (max possible score 4 - 4)
Team A: - (2 - 2) (max possible score 3 - 4)
Team B: - (2 - 2) (max possible score 3 - 3)
Team A: - (2 - 2) (max possible score 2 - 3)
Team B: - (2 - 2) (max possible score 2 - 2)
First 5 penalties result in a tie, so we move on to extra penalties.
Team A: -, Team B: - (2 - 2)
Team A: X, Team B: X (3 - 3)
Team A: -, Team B: X (3 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
Вот правильный вход, где еще рано определять победителя:
Team A: X X - -
Team B: - X - X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: X (2 - 1) (max possible score 5 - 4)
Team A: - (2 - 1) (max possible score 4 - 4)
Team B: - (2 - 1) (max possible score 4 - 3)
Team A: - (2 - 1) (max possible score 3 - 3)
Team B: X (2 - 2) (max possible score 3 - 3)
The input has ended before the winner can be determined, so it's valid if team A
starts first. Therefore, the input is valid.
Наконец, вот вход, где длины списков отличаются:
Team A: - - -
Team B: X X - X
Since team B shot more penalties, it starts first:
Team B: X (0 - 1) (max possible score 5 - 5)
Team A: - (0 - 1) (max possible score 4 - 5)
Team B: X (0 - 2) (max possible score 4 - 5)
Team A: - (0 - 2) (max possible score 3 - 5)
Team B: - (0 - 2) (max possible score 3 - 4)
Team A: - (0 - 2) (max possible score 2 - 4)
Team B: X (0 - 3) (max possible score 2 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid.
правила
- Команда, которая стреляет первой, может быть либо А, либо Б, вы не можете предполагать, что она всегда будет стрелять первой.
- Списки либо будут иметь одинаковую длину, либо их длины будут отличаться на один.
- Вы можете выбрать любые два отличных и непротиворечивых значения для представления штрафов / невыигранных штрафов.
- Списки также могут быть представлены в виде целых чисел, преобразованных из биективной базы 2, строк или родного формата списка вашего языка. Если выбран формат биективного основания 2, правила ввода применяются к числам, преобразованным в биективное основание 2 (таким образом, цифры
1
и2
могут означать как забитые и не оцененные, так и не оцененные и оцененные соответственно). Обычный двоичный код не допускается , так как невозможно определить наличие лидирующих нулей в предполагаемом двоичном представлении. - Это код-гольф , поэтому выигрывает самое короткое решение. Тем не менее, не отчаивайтесь от ответа, даже если кажется, что ваш язык не может "превзойти специализированные".
Контрольные примеры
В этих тестовых случаях 0
будет представлять не цель, а 1
будет представлять цель.
Формат:
[Team A], [Team B]
Допустимые входные данные:
[], []
[0], [0]
[0], [1]
[1], [1]
[0], []
[1, 1, 1, 1], [0, 0, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0, 1]
[1, 1, 1], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Неверные данные:
[0, 1, 1, 1, 1], [0, 1, 1, 0, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1]
[1, 1, 1, 0], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
[1, 0, 1, 0, 1], [0, 1, 0, 1, 0, 1]
[0, 0, 0, 0, 1], [0, 1, 1, 1, 0]
[[0,0],[1,1]]
(или любой тестовый случай, когда один из двух внутренних списков имеет 2 элемента) правдив, поскольку игра все еще продолжается (точно так же, как тестовые случаи с [[0],[1]]
или [[0],[]]
все еще находятся в процессе)?