Gửi bài giải
Điểm:
10,00
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
64M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
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
Bình luận