Турнир эльфов без грустных встреч

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Рекурсия и перебор
Динамическое программирование
Деревья и графы

В турнире на выбывание участвуют 2^n эльфов с номерами от 1 до 2^n. Перед началом их выстраивают в ряд в выбранном вами порядке. В каждом раунде первый оставшийся эльф играет со вторым, третий — с четвёртым и так далее; проигравшие выбывают, победители остаются на своих местах. После n раундов остаётся один эльф.

Некоторые эльфы чувствительны. Правило [e, k, f1, f2, …] означает: эльф e расстроится, если в одном из первых k раундов встретится с кем-то из своих друзей f1, f2, …. Дружба не обязательно взаимна, но встреча расстраивает e в любом случае. Исход матчей заранее неизвестен.

Верните true, если существует порядок, при котором ни один эльф не расстроится при любых исходах матчей, иначе false. Без правил ответ true.

Ограничения: 1 ≤ n ≤ 4, 1 ≤ k ≤ n; у каждого эльфа не больше одного правила, в нём хотя бы один друг, друзья различны и не совпадают с e; всего друзей во всех правилах не больше 2^n.

Пример: 2, [[1, 1, 2], [3, 1, 4]] → true (порядок 1, 3, 2, 4).


Источник: Coding Competitions Archive, kickstart/2015/round_c/ggames · © Google LLC · Apache-2.0 · условие переведено и дополнено

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки