atcoder#AGC059D. [AGC059D] Distinct Elements on Subsegments

[AGC059D] Distinct Elements on Subsegments

配点 : 11001100

問題文

整数列 A=(A1,A2,,AN+K1)A=(A_1, A_2, \ldots, A_{N + K-1}) (1AiN+K11 \leq A_i \leq N+K-1) に対して、BiB_iAi,Ai+1,,Ai+K1A_i,A_{i+1},\ldots,A_{i+K-1} の中の相異なる要素の個数として、列 B=(B1,B2,,BN)B=(B_1, B_2, \ldots, B_N) を作ります。

B1,B2,,BNB_1, B_2, \ldots, B_N が与えられます。この列 BB を生成し得た列 AA が存在するか判定し、存在する場合はそのような列 AA を一つ構成してください。

各入力ファイルについて、TT 個のテストケースを解いてください。

制約

  • 1T51041 \le T \le 5 \cdot 10^4
  • 2N21052 \le N \le 2 \cdot 10^5
  • 2K21052 \le K \le 2 \cdot 10^5
  • 1BiK1 \le B_i \le K
  • 各入力ファイル内の NN の総和は 21052\cdot 10^5 を超えない。
  • 各入力ファイル内の KK の総和は 21052\cdot 10^5 を超えない。
  • 入力中のすべての値は整数である。

入力

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

TT

case1case_1

case2case_2

\vdots

caseTcase_T

各ケースは以下の形式である。

NN KK

B1B_1 B2B_2 \ldots BNB_N

出力

各テストケースについて、題意を満たす列 AA が存在しなければ、NO と出力せよ。

そうでなければ、答えを次の形式で出力せよ。

YES

A1A_1 A2A_2 \ldots AN+K1A_{N+K-1}

ここで、1AiN+K11 \leq A_i \leq N+K-1 でなければならず、AABB を生成するものでなければならない。 複数の解が存在する場合は、そのいずれも認められる。

YES または NO の出力において、各文字は英大文字・小文字のいずれでもよい。

3
3 3
1 2 1
4 3
1 2 2 1
6 4
3 3 3 3 3 3
NO
YES
1 1 1 2 2 2 
YES
1 2 3 1 2 3 1 2 3