Hoán đổi

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2600 Thời gian: 2.0s Bộ nhớ: 259M Input: bàn phím Output: màn hình

Cho một hoán vị \((P_1,P_2,...,P_n)\) của tập hợp: \(\left\{1,2,3,..,N\right\}\) và ta có thể thực hiện một số lần tuỳ ý (có thể bằng \(0\)) với một phép toán sau:

  • Chọn hai chỉ số \(i,j(1\le i<j\le N)\) thoả mãn \(j-i\le K\) và \(|P_i-P_j|=1\). Sau đó, hoán vị giá trị của \(P_i\) và \(P_j\) (với \(K\) là số nguyên dương cho trước)

Yêu cầu: Xét tất cả các hoán vị có thể thu được bằng cách áp dụng phép toán trên. Hãy tìm hoán vị có thứ tự từ điển bé nhất !

Input

  • Dòng thứ nhất chứa \(2\) số nguyên \(N,K(2\le N\le 500000,1\le K\le N-1)\)

  • Dóng thứ hai chứa hoán vị \(P_1,P_2,...,P_N\)

Output

  • In ra ra hoán vị có thứ tự từ điển bé nhất cần tìm, và in mỗi số trên một dòng.

Example

Test 1

Input
10 3
6 4 3 9 2 5 7 1 10 8 
Output
4
3
2
7
1
6
8
5
10
9

Test 2

Input
12 2
5 2 6 4 11 1 10 7 3 9 8 12 
Output
2
1
4
3
6
5
9
8
7
11
10
12

Bình luận (2)

Mới nhất
Tải bình luận...