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
Коментарі