atcoder#ARC128E. [ARC128E] K Different Values

[ARC128E] K Different Values

题目描述

長さ N N の整数列 A=(A1,A2,,AN) A=(A_1,A_2,\cdots,A_N) ,及び整数 K K が与えられます.

以下の条件を両方満たす整数列 x x を作ることを考えます.

  • 各整数 i i (1  i  N 1\ \leq\ i\ \leq\ N ) について,x x はちょうど Ai A_i 個の i i を含む. また逆に,それ以外の整数を含まない.
  • x x の中で連続するどの K K 個を見ても,その K K 個の値はすべて異なる.

条件を満たす x x を作ることが可能かどうか判定し,可能な場合は条件を満たす中で辞書順最小の x x を求めてください.

输入格式

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

N N K K A1 A_1 A2 A_2 \cdots AN A_N

输出格式

条件を満たす数列 x x が作ることが不可能な場合,-1 と出力せよ. 可能な場合,辞書順最小の x x を出力せよ.

题目大意

给你一个长度为 nn 的整数序列 AA 以及一个整数 kk ,请你构造一个序列 BB,满足以下两个条件 :

  • 值为 ii 的数出现了 AiA_i 次;
  • 对于 1ink+11 \leq i \leq n-k+1 , 满足 $B_i \neq B_{i+1} \neq B_{i+2} \neq \cdots \neq B_{i+k-1}$。

如果无解,输出 1-1;否则输出你能构造出的字典序最小的序列 BB

3 3
2 2 1
1 2 3 1 2
3 2
2 1 2
1 2 3 1 3
3 3
1 3 3
-1

提示

制約

  • 2  K  N  500 2\ \leq\ K\ \leq\ N\ \leq\ 500
  • 1  Ai 1\ \leq\ A_i
  • 1  i  N Ai  200000 \sum_{1\ \leq\ i\ \leq\ N}\ A_i\ \leq\ 200000
  • 入力される値はすべて整数である

Sample Explanation 1

x=(1,2,3,1,2),(2,1,3,2,1) x=(1,2,3,1,2),(2,1,3,2,1) の二つが条件を満たし,その中で辞書順最小の (1,2,3,1,2) (1,2,3,1,2) が答えになります.