Турнир эльфов без грустных встреч
Задача по программированию с проверкой онлайн
- Сложность
- Сложная
- Языки
- 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 · условие переведено и дополнено