11151. Обмін


Відправити розв'язок

Бали: 100
Time limit: 3.0s
Memory limit: 250M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

Задається перестановка \(P_1 ... P_N\) множини чисел 1, 2, ..., \(N\).

До цієї перестановки можна застосовувати будь-яку кількість таких операцій (можливо, нуль):

  • Виберіть два індекси \(i,j\) (\(1 \le i < j \le N\)), такі, що \(K \le (j - i)\) і \(|P_i - P_j| = 1\). Поміняйте місцями \(P_i\) та \(P_j\).

Серед усіх перестановок, які можна отримати, застосувавши цю операцію до даної перестановки, знайдіть лексикографічно найменшу.

Формат вхідних даних

Перший рядок вхідного потоку містить два цілі числа \(N,K\) (\(2 \le N \le 500000\), \(1 \le K \le N-1\)).

Другий рядок містить перестановку \(P_1 ... P_N\).

Всі числа у рядках розділяються пропуском.

Формат вихідних даних

У вихідний потік вивести лексикографічно найменшу перестановку, яку можна отримати. Числа виводити по одному у рядку.

Примітка

До прикладу 1:

Один із можливих способів отримати лексикографічно найменшу перестановку показано нижче:

4 2 3 1

4 1 3 2

3 1 4 2

2 1 4 3

Приклад вхідних даних

4 2
4 2 3 1

Приклад вихідних даних

2
1
4
3

Приклад вхідних даних

5 1
5 4 3 2 1

Приклад вихідних даних

1
2
3
4
5

Приклад вхідних даних

8 3
4 5 7 8 3 1 2 6

Приклад вихідних даних

1
2
6
7
5
3
4
8

Коментарі

Ще немає коментарів.