trang chủ / đề bài / sqrtperm

Căn bậc hai của hoán vị

Đề bài

Mô tả

Một hoán vị độ dài n là một dãy chứa mỗi số nguyên từ 1 đến n đúng một lần. Với hoán vị q, ta định nghĩa bình phương của q là hoán vị p sao cho:

pi=qqivới mọi i=1,2,…,n.

Ví dụ, bình phương của q=[4,5,1,2,3] là p=[2,3,4,5,1].

Cho hoán vị p, hãy tìm một hoán vị q sao cho bình phương của q bằng p (tức qqi=pi với mọi i). Nếu có nhiều đáp án, in ra bất kỳ. Nếu không tồn tại q nào thỏa mãn, in ra −1.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n, số phần tử của hoán vị p.
  • Dòng thứ hai chứa n số nguyên phân biệt p1,p2,…,pn.

Dữ liệu ra

  • Nếu không tồn tại hoán vị q thỏa mãn, in ra −1.
  • Ngược lại, in ra n số nguyên phân biệt q1,q2,…,qn là các phần tử của hoán vị q. Nếu có nhiều đáp án, in ra bất kỳ đáp án hợp lệ nào.

Ràng buộc

  • 1≤n≤106
  • 1≤pi≤n và các pi đôi một phân biệt.

Ví dụ

Input Output Giải thích
4
2 1 4 3
4 3 1 2 Với q=[4,3,1,2]: qq1=q4=2=p1, qq2=q3=1=p2, qq3=q1=4=p3, qq4=q2=3=p4. Đáp án khác cũng được chấp nhận.
4
2 1 3 4
-1 Không có hoán vị q nào mà bình phương bằng p.
5
2 3 4 5 1
4 5 1 2 3 Bình phương của q=[4,5,1,2,3] đúng bằng p.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0