Chiếc hộp bí mật

Đề bài

Mô tả

Một hoán vị p là dãy gồm n số nguyên dương phân biệt, mỗi số nằm trong đoạn từ 1 đến n. Ví dụ [3,4,1,2], [1], [1,2] là các hoán vị, còn [0], [1,2,1], [2,3] thì không.

Bạn cần mở một chiếc hộp bị khoá bằng một mã bí mật, chính là một hoán vị p có độ dài n. Bạn không biết hoán vị này, chỉ biết dãy q gồm các giá trị lớn nhất của các tiền tố của p:

  • q1=p1
  • q2=max(p1,p2)
  • q3=max(p1,p2,p3)
  • qn=max(p1,p2,,pn)

Hãy dựng một hoán vị p bất kỳ sao cho dãy giá trị lớn nhất tiền tố của nó đúng bằng dãy q đã cho, hoặc cho biết không tồn tại hoán vị nào như vậy.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t , số lượng test.
  • Với mỗi test:
    • Dòng đầu chứa số nguyên n , độ dài hoán vị.
    • Dòng thứ hai chứa n số nguyên q1,q2,,qn . Bảo đảm qiqi+1 với mọi 1i<n.

Dữ liệu ra

Với mỗi test, in ra:

  • 1 nếu không tồn tại hoán vị p phù hợp.
  • Ngược lại, in ra n số nguyên phân biệt p1,p2,,pn (1pin). Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1t104
  • 1n105
  • 1qinqiqi+1
  • Tổng tất cả các giá trị n trên mọi test không vượt quá 105.

Ví dụ

Input Output Giải thích
4
5
1 3 4 5 5
4
1 1 3 4
2
2 2
1
1
1 3 4 5 2
-1
2 1
1
Test 1: với p=[1,3,4,5,2] ta có các tiền tố lớn nhất là 1,3,4,5,5 đúng bằng q.
Test 2: q1=1 buộc p1=1, nhưng q2=1 đòi hỏi p2<1 (không tồn tại) nên vô nghiệm.
Test 3: p=[2,1] cho tiền tố lớn nhất 2,2.
Test 4: chỉ có p=[1].
3
3
1 1 1
2
1 1
4
3 3 3 3
-1
-1
-1
Cả ba test đều vô nghiệm: sau khi đặt giá trị lớn nhất đầu tiên, không còn đủ các số nhỏ hơn để lấp vào những vị trí mà giá trị lớn nhất tiền tố không tăng.

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 1.26.3 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