trang chủ / đề bài / lexminperm

Hoán vị nhỏ nhất theo thứ tự từ điển

Đề bài

Mô tả

Cho một hoán vị p gồm n phần tử, tức là một dãy chứa đúng một lần mỗi số nguyên từ 1 đến n.

Bạn được phép thực hiện n−1 thao tác. Thao tác thứ i (với 1≤i≤n−1) đổi chỗ hai phần tử đang đứng ở vị trí i và vị trí i+1 của hoán vị hiện tại.

Mỗi thao tác chỉ được dùng nhiều nhất một lần, nhưng bạn có thể chọn thực hiện chúng theo thứ tự tuỳ ý, và cũng có thể bỏ qua thao tác nào tuỳ thích (kể cả không thực hiện thao tác nào).

Hãy tìm hoán vị nhỏ nhất theo thứ tự từ điển có thể thu được.

Hoán vị p nhỏ hơn hoán vị q (cùng độ dài n) theo thứ tự từ điển nếu tồn tại chỉ số i sao cho pj=qj với mọi j<i và pi<qi.

Bạn phải trả lời q bộ dữ liệu độc lập.

Dữ liệu vào

  • Dòng đầu chứa số nguyên q là số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm hai dòng:
    • Dòng thứ nhất chứa số nguyên n là độ dài hoán vị.
    • Dòng thứ hai chứa n số nguyên đôi một khác nhau từ 1 đến n mô tả hoán vị.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng n số nguyên là hoán vị nhỏ nhất theo thứ tự từ điển thu được.

Ràng buộc

  • 1≤q≤100
  • 1≤n≤100
  • Dãy đã cho luôn là một hoán vị của 1,2,…,n.

Ví dụ

Input Output Giải thích
4
5
5 4 1 3 2
4
1 2 4 3
1
1
4
4 3 2 1
1 5 2 4 3
1 2 3 4
1
1 4 3 2
Với 5 4 1 3 2: dùng thao tác 2 được 5 1 4 3 2, dùng thao tác 4 được 5 1 4 2 3, dùng thao tác 3 được 5 1 2 4 3, cuối cùng dùng thao tác 1 được 1 5 2 4 3. Với 1 2 4 3 chỉ cần dùng thao tác 3. Với 4 3 2 1, sau khi đưa số 1 lên đầu thì cả ba thao tác đều đã dùng hết nên phần đuôi giữ nguyên 4 3 2.
1
5
4 2 3 5 1
1 4 2 3 5 Số 1 đi từ vị trí 5 về vị trí 1, tiêu tốn toàn bộ bốn thao tác, nên phần còn lại không thể sắp xếp thêm và giữ nguyên thứ tự tương đối 4 2 3 5.

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