Valera và phép hoán đổi
Đề bài
Mô tả
Cho một hoán vị độ dài , tức là dãy gồm số nguyên phân biệt với . Hoán vị được gọi là đồng nhất nếu với mọi .
Một phép hoán đổi là thao tác đổi chỗ hai phần tử và . Đặt là số phép hoán đổi tối thiểu cần thực hiện để biến hoán vị thành hoán vị đồng nhất.
Cho hoán vị và số nguyên . Hãy tìm cách biến thành một hoán vị nào đó sao cho , sử dụng số phép hoán đổi ít nhất có thể. Nếu có nhiều dãy hoán đổi có cùng độ dài nhỏ nhất, hãy in ra dãy có thứ tự từ điển nhỏ nhất (so sánh dãy số nguyên mà bạn in ra).
Dữ liệu vào
- Dòng thứ nhất chứa số nguyên — độ dài của hoán vị .
- Dòng thứ hai chứa số nguyên phân biệt — hoán vị ban đầu.
- Dòng thứ ba chứa số nguyên .
Dữ liệu ra
- Dòng thứ nhất in số nguyên — số phép hoán đổi nhỏ nhất.
- Dòng thứ hai in số nguyên , mô tả dãy hoán đổi: bạn lần lượt thực hiện các phép hoán đổi . Nếu có nhiều dãy thoả mãn, in dãy có thứ tự từ điển nhỏ nhất.
Ràng buộc
- và các phân biệt
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 2 3 4 5 2 |
2 1 2 1 3 |
ban đầu đã là đồng nhất nên . Cần đạt , do đó phải thực hiện ít nhất phép hoán đổi. Một cách hợp lệ là rồi , biến thành với . |
| 5 2 1 4 5 3 2 |
1 1 2 |
(cần phép hoán đổi để đưa về đồng nhất). Sau khi đổi , ta được với . |
Bình luận