trang chủ / bài tập / restperm

Khôi phục hoán vị

Đề bài

Mô tả

Cho một dãy số b1,b2,,bn gồm các số nguyên đôi một khác nhau. Hãy tìm hoán vị a1,a2,,a2n của các số từ 1 đến 2n có thứ tự từ điển nhỏ nhất sao cho:

bi=min(a2i1,a2i)với mọi 1in,

hoặc xác định rằng không tồn tại hoán vị nào thỏa mãn.

Nói cách khác, ta chia dãy a thành n cặp liên tiếp (a1,a2),(a3,a4),; giá trị nhỏ hơn trong cặp thứ i phải đúng bằng bi.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên t — số lượng bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n — số phần tử của dãy b.
    • Dòng thứ hai chứa n số nguyên khác nhau b1,,bn.

Dữ liệu ra

Với mỗi bộ dữ liệu, nếu không tồn tại hoán vị thỏa mãn, in ra 1.

Ngược lại, in ra 2n số nguyên a1,,a2n — hoán vị có thứ tự từ điển nhỏ nhất thỏa mãn yêu cầu.

Ràng buộc

  • 1t100
  • 1n100
  • 1bi2n, các bi đôi một khác nhau.
  • Tổng của n trên tất cả các bộ dữ liệu không vượt quá 100.

Ví dụ

Input Output Giải thích
5
1
1
2
4 1
3
4 1 3
4
2 3 4 5
5
1 5 7 2 8
1 2
-1
4 5 1 2 3 6
-1
1 3 5 6 7 9 2 4 8 10
Bộ 1: cặp (1,2) có min bằng 1. Bộ 2: b1=4 cần một số lớn hơn 4 nhưng 2n=4 nên không có 1. Bộ 3: ghép 4 với 5, 1 với 2, 3 với 6. Bộ 5: mỗi bi ghép với số nhỏ nhất còn lại lớn hơn nó.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0