Sắp Xếp Với 0
Submit solution
Points:
10.00
Time limit:
1.0s
Memory limit:
64M
Input:
stdin
Output:
stdout
Authors:
Problem type
Allowed languages
C, C++, Java, Pascal, Python, Scratch, TEXT
Cho \(K = (~k_0, k_1, … , k_n~)\) là một hoán vị của dãy số \((0, 1, 2, …, n)\).
Xét phép biến đổi ~SwapZero(v)~ với tham số ~v~ là một số nguyên dương \(\in[1, n]\): Đảo vị trí phần tử mang giá trị ~v~ và phần tử mang giá trị 0 trong dãy ~K~.
Yêu cầu
Hãy tìm một số ít nhất các phép biến đổi ~SwapZero~ để biến dãy ~K~ thành dãy \((1, 2, …, n)\).
Dữ liệu
Dòng 1: Chứa số nguyên dương ~n~.
Dòng 2: Chứa ~n+1~ số nguyên ~k_0, k_1, … , k_n~.
Kết quả
Dòng 1: Ghi số lượng tối thiểu các phép ~SwapZero(s)~ phải thực hiện.
Dòng 2: Ghi tham số ~s~ của các phép ~SwapZero~ theo đúng trình tự thực hiện.
Giới hạn
\(n \leq ~10^5~.\)
Input
5
2 3 0 1 5 4
Output
7
2 3 1 3 4 5 4
Comments