Sắp Xếp Với 0

PDF

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

Please read the guidelines before commenting.


There are no comments at the moment.