atcoder#AGC001F. [AGC001F] Wide Swap

[AGC001F] Wide Swap

题目描述

長さ N N の、1 ~ N 1\ ~\ N をちょうど 1 1 つずつ含む数列 P1 ... PN P_1\ ...\ P_N が与えられます。

あなたはこの数列に対し、以下のような操作を何度でも行えます。

  • 整数 i,j (1  i < j  N) i,j\ (1\ ≦\ i\ <\ j\ ≦\ N) を選ぶ。
  • Pi P_i Pj P_j の値を入れ替える。
  • ただしこのとき、j  i  K j\ -\ i\ ≧\ K かつ Pi  Pj = 1 |P_i\ -\ P_j|\ =\ 1 を満たしていなければならない。

このような操作によって作ることのできる数列のうち、辞書順最小のものを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K P1 P_1 P2 P_2 ... ... PN P_N

输出格式

問題文中の操作によって作ることのできる辞書順最小の数列を出力せよ。

题目大意

给出一个元素集合为 {1,2,,N}\{1,2,\dots,N\} (1N500,000)(1\leq N\leq 500,000) 的排列 PP,当有 i,ji,j (1i<jN)(1\leq i<j\leq N) 满足 jiKj-i\geq K (1KN1)(1\leq K\leq N-1)PiPj=1|P_{i}-P_{j}|=1时,可以交换 PiP_{i}PjP_{j}

求:可能排列中字典序最小的排列。

输入格式:

NN KK

P1P_{1} P2P_{2} \dots PNP_{N}

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

提示

制約

  • 2N500,000 2≦N≦500,000
  • 1KN1 1≦K≦N-1
  • P P 1, 2, ..., N 1,\ 2,\ ...,\ N の順列である。

Sample Explanation 1

以下のような手順で操作を行えば良いです。 - 4 2 3 1 4\ 2\ 3\ 1 - 4 1 3 2 4\ 1\ 3\ 2 - 3 1 4 2 3\ 1\ 4\ 2 - 2 1 4 3 2\ 1\ 4\ 3