Hoán vị nhỏ nhất theo thứ tự từ điển
Đề bài
Mô tả
Cho một hoán vị gồm phần tử, tức là một dãy chứa đúng một lần mỗi số nguyên từ đến .
Bạn được phép thực hiện thao tác. Thao tác thứ (với ) đổi chỗ hai phần tử đang đứng ở vị trí và vị trí 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ị nhỏ hơn hoán vị (cùng độ dài ) theo thứ tự từ điển nếu tồn tại chỉ số sao cho với mọi và .
Bạn phải trả lời bộ dữ liệu độc lập.
Dữ liệu vào
- Dòng đầu chứa số nguyên 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 là độ dài hoán vị.
- Dòng thứ hai chứa số nguyên đôi một khác nhau từ đế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 số nguyên là hoán vị nhỏ nhất theo thứ tự từ điển thu được.
Ràng buộc
- Dãy đã cho luôn là một hoán vị của .
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