У математиці перестановка σ порядку n є бієктивною функцією від цілих чисел 1 ... n до себе. Цей список:
2 1 4 3
являє собою перестановку σ таким, що σ (1) = 2, σ (2) = 1, σ (3) = 4 і σ (4) = 3.
Квадратний корінь перестановки σ - перестановка, яка при застосуванні до себе дає σ . Наприклад, 2 1 4 3
має квадратний корінь τ = 3 4 2 1
.
k 1 2 3 4
τ(k) 3 4 2 1
τ(τ(k)) 2 1 4 3
тому що τ ( τ (k)) = σ (k) для всіх 1≤k≤n.
Вхідні дані
Список n > 0 цілих чисел, всі від 1 до n включно, що представляють перестановку. Перестановка завжди матиме квадратний корінь.
Ви можете скористатися списком 0 ... n-1 замість того, щоб вхід і вихід були узгодженими.
Вихідні дані
Квадратний корінь перестановки, також як масив.
Обмеження
Ваш алгоритм повинен працювати в поліномі в часі n . Це означає, що ви не можете просто провести цикл через усі n ! перестановки порядку n .
Будь-які вбудовані дозволені.
Тестові приклади:
Зауважте, що багато входів мають кілька можливих виходів.
2 1 4 3
3 4 2 1
1
1
3 1 2
2 3 1
8 3 9 1 5 4 10 13 2 12 6 11 7
12 9 2 10 5 7 4 11 3 1 13 8 6
13 7 12 8 10 2 3 11 1 4 5 6 9
9 8 5 2 12 4 11 7 13 6 3 10 1