Khôi phục hoán vị

Đề bài

Mô tả

Vasya viết ra một hoán vị p1,p2,,pn của các số nguyên từ 1 đến n, nghĩa là 1pin với mọi i và tất cả pi đôi một khác nhau.

Sau đó, với mỗi vị trí i bạn ấy ghi thêm một số nexti, được định nghĩa là chỉ số j nhỏ nhất thoả mãn i<jnpj>pi. Nếu không tồn tại j như vậy thì nexti=n+1.

Trên đường về nhà trời mưa làm ướt quyển vở. Toàn bộ hoán vị và một vài giá trị nexti đã không còn đọc được nữa. Những giá trị nexti bị mất được ghi lại là 1.

Cho dãy next1,next2,,nextn, hãy khôi phục một hoán vị p bất kỳ sao cho mọi giá trị nexti khác 1 đều đúng theo định nghĩa trên. Các vị trí có nexti=1 không đặt ra ràng buộc nào.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t: số lượng bộ dữ liệu.
  • Tiếp theo là 2t dòng mô tả các bộ dữ liệu, mỗi bộ gồm hai dòng:
    • Dòng thứ nhất chứa số nguyên n: độ dài hoán vị.
    • Dòng thứ hai chứa n số nguyên next1,next2,,nextn.

Dữ liệu ra

In ra t dòng, dòng thứ i là đáp án cho bộ dữ liệu thứ i.

Nếu không tồn tại hoán vị nào thoả mãn, in ra 1. Ngược lại, in ra n số nguyên đôi một khác nhau p1,p2,,pn. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1t100000
  • 1n500000
  • nexti=1 hoặc i<nextin+1
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 500000

Ví dụ

Input Output Giải thích
3
3
2 3 4
2
3 3
3
-1 -1 -1
1 2 3
2 1
1 2 3
Bộ 1: với p=[1,2,3] thì mỗi phần tử đều nhỏ hơn phần tử kế tiếp nên next=[2,3,4]. Đây cũng là hoán vị duy nhất thoả mãn.
Bộ 2: next1=3=n+1 buộc p2<p1, nên p=[2,1].
Bộ 3: mọi giá trị đều bị mất nên hoán vị nào cũng hợp lệ.
3
3
3 4 -1
1
2
4
4 -1 4 5
-1
1
3 1 2 4
Bộ 1: next1=3 buộc p2<p1<p3, còn next2=4=n+1 buộc p3<p2. Hai điều này mâu thuẫn nên đáp án là 1.
Bộ 2: chỉ có một hoán vị độ dài 1.
Bộ 3: next1=4 buộc p2,p3<p1<p4, còn next3=4 buộc p3<p4. Hoán vị [3,2,1,4] cũng được chấp nhậ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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0