I - Maximize Array Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : {100}

問題文

長さ N の正整数列 A=(A_1,A_2,\ldots,A_N) と、正整数 K が与えられます。 A に以下の操作を好きな回数繰り返して出来る数列のうち、辞書順最大のものを求めてください。

  • A の長さ K の連続部分列を削除する。厳密には、現在の A の長さを M として、整数 i\ (1\leq i\leq M-K+1) を選び、A=(A_1,A_2,\ldots,A_M)(A_1,\ldots,A_{i-1},A_{i+K},\ldots,A_{M}) で置き換える。

制約

  • 2\leq N\leq 3\times 10^5
  • 1\leq K\leq N-1
  • 1\leq A_{i}\leq N
  • 入力は全て整数

入力

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

N K
A_1 A_2 \ldots A_N

出力

答えを出力せよ。


入力例 1

9 3
1 2 3 4 1 2 3 4 1

出力例 1

4 4 1

辞書順最大の数列を得ることができる操作手順の一つです。

  • (1,2,3,4,\color{red}{1}\color{black},\color{red}{2}\color{black},\color{red}{3}\color{black},4,1) \to (\color{red}{1}\color{black},\color{red}{2}\color{black},\color{red}{3}\color{black},4,4,1)\to(4,4,1)

入力例 2

6 1
1 6 4 2 3 5

出力例 2

6 5

辞書順最大の数列を得ることができる操作手順の一つです。

  • (1,6,4,\color{red}2\color{black},3,5)\to(1,6,\color{red}4\color{black},3,5)\to(\color{red}1\color{black},6,3,5)\to(6,\color{red}3\color{black},5)\to(6,5)

入力例 3

6 5
6 5 4 3 2 1

出力例 3

6 5 4 3 2 1

一度も操作しないのが最適です。