eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Карточний поєдинок High

Карточний поєдинок High

Двоє гравців грають у гру. Кожен з гравців спочатку отримує деяку кількість карт (нехай буде \textbf{n_1} та \textbf{n_2} відповідно). Кожним ходом гравці вибирають по одній з наявних у них на руках карт, і потім відкривають їх. Більш слабка карта відкидається у відбій, а більш сильнішу гравець, який показав її, забирає назад. У випадку, якщо гравці показали однакові карти, вони обидві відкидаються у відбій. Гра продовжується до тих пор, доки хоча б у одного з гравців не закінчаться карти. Якщо при цьомц у одного з гравців залишилась ще хоча б одна карта, він отримує \textbf{1} очко, а суперник -- \textbf{0}. Якщо ж у обох гравців закінчились карти, кожен отримує по \textbf{0.5} очок. Усього є \textbf{N} типів карт. Відношення сили карт може бути не транзитивним і задається матрицею \textbf{A}. \textbf{A_\{ij \}} дорівнює \textbf{1}, якщо карта \textbf{i} б'є карту \textbf{j}, і \textbf{0} у протилежному випадку. Потрібно визначити максимальний середній виграш гравця у припущенні, що другий гравець грає оптимально. \textbf{Обмеження} \textbf{1} ≤ \textbf{n_1}, \textbf{n_2}, \textbf{N} ≤ \textbf{8}. \textbf{A_ij + A_ji =1} при \textbf{i} ≠ \textbf{j}, \textbf{A_ii =0}. \InputFile У першому рядку задається число \textbf{N}. Наступні \textbf{N} рядків містять по \textbf{N} чисел, які визначають матрицю \textbf{A}. Наступний рядок містить число \textbf{n_1} та ще \textbf{n_1} чисел, кожне з яких визначає тип відповідної карти першого гравця. У наступному рядку у аналогічному форматі задаються карти другого гравця. \OutputFile Виведіть ціну гри для першого гравця з точністю не менше \textbf{10^\{-8\}}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
3
0 1 1
0 0 1
0 0 0
2 3 2
1 1
Вихідні дані #1
0.00000000