[ARC165B] Sliding Window Sort 2
题意翻译
给定正整数 $n,k$ 和一个长度为 $n$ 的整数排列 $P$,你需要选择一个长度为 $k$ 的区间 $[l,l + k - 1]$,将这个区间从小到大排序。
找到操作后最终字典序最大的排列。
$1 \leq k \leq n \leq 2 \times 10^{5}$。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc165/tasks/arc165_b
$ 1 $ から $ N $ までの整数からなる順列 $ P=(P_1,P_2,\dots,P_N) $ と整数 $ K $ が与えられます。
順列 $ P $ に対して以下のような操作を考えます。
- $ 1\ \leq\ i\ \leq\ N-K+1 $ を満たす整数 $ i $ を $ 1 $ つ選び、 $ P_i,P_{i+1},\dots,P_{i+K-1} $ を昇順に並び替える。すなわち、$ P_i,P_{i+1},\dots,P_{i+K-1} $ を小さい方から順に並べたものを $ (x_1,x_2,\dots,x_K) $ としたとき、各 $ 1\ \leq\ j\ \leq\ K $ に対して $ P_{i+j-1} $ を $ x_j $ で置き換える。
$ P $ に対して上記の操作をちょうど $ 1 $ 回行うことで得られる順列のうち、辞書式順序最大のものを求めてください。
数列の辞書順とは?数列 $ S\ =\ (S_1,S_2,\ldots,S_{|S|}) $ が数列 $ T\ =\ (T_1,T_2,\ldots,T_{|T|}) $ より**辞書順で小さい**とは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、$ |S|,\ |T| $ はそれぞれ $ S,\ T $ の長さを表します。
1. $ |S|\ \lt\ |T| $ かつ $ (S_1,S_2,\ldots,S_{|S|})\ =\ (T_1,T_2,\ldots,T_{|S|}) $。
2. ある整数 $ 1\ \leq\ i\ \leq\ \min\lbrace\ |S|,\ |T|\ \rbrace $ が存在して、下記の $ 2 $ つがともに成り立つ。
- $ (S_1,S_2,\ldots,S_{i-1})\ =\ (T_1,T_2,\ldots,T_{i-1}) $
- $ S_i $ が $ T_i $ より(数として)小さい。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられます。
> $ N $ $ K $ $ P_1 $ $ P_2 $ $ \dots $ $ P_N $
输出格式
$ P $ に対して操作をちょうど $ 1 $ 回行うことで得られる順列のうち、辞書式順序で最大のものを空白区切りで出力してください。
输入输出样例
输入样例 #1
4 3
2 1 4 3
输出样例 #1
2 1 3 4
输入样例 #2
5 1
3 1 4 2 5
输出样例 #2
3 1 4 2 5
输入样例 #3
20 7
9 4 3 1 11 12 13 15 17 7 2 5 6 20 19 18 8 16 14 10
输出样例 #3
9 4 3 1 11 12 13 15 17 7 2 5 6 8 18 19 20 16 14 10
说明
### 制約
- $ 1\ \leq\ K\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ P_i\ \leq\ N $
- $ (P_1,P_2,\dots,P_N) $ は $ 1 $ から $ N $ までの整数からなる順列
- 入力される値はすべて整数
### Sample Explanation 1
$ i=1 $ として操作を行うと $ (P_1,P_2,P_3)=(2,1,4) $ であり、これを昇順に並び替えると $ (1,2,4) $ となります。よって操作によって $ P_1,P_2,P_3 $ はそれぞれ $ 1,2,4 $ に置き換えられ、 $ P=(1,2,4,3) $ となります。同様に $ i=2 $ として操作を行うと $ P $ は $ (2,1,3,4) $ となります。 これらのうち辞書式順序で大きいのは $ (2,1,3,4) $ であるため、答えは $ (2,1,3,4) $ となります。