atcoder#AGC046E. [AGC046E] Permutation Cover

[AGC046E] Permutation Cover

题目描述

整数 K K と整数 a1,, aK a_1,\dots,\ a_K が与えられます。以下を満たす数列 P P が存在するか判定し、存在する場合は辞書順最小のものを求めてください。

  • P P のすべての項は 1 1 以上 K K 以下の整数である
  • i=1,, K i=1,\dots,\ K に対し、P P i i ai a_i 個含む
  • P P の各項について、その項を含むある長さ K K の連続する部分列が存在し、1,, K 1,\dots,\ K の並び替えになっている

输入格式

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

K K a1 a_1 a2 a_2 \dots aK a_K

输出格式

条件を満たす数列が存在しない場合、-1 を出力せよ。 そうでない場合、条件を満たす辞書順最小の数列を出力せよ。

题目大意

给定正整数 KK 与序列 a1,,aKa_1,\dots,a_K,试寻找满足以下条件的字典序最小的序列 PP,或者报告无解:

  • PP 中每个数都是 [1,K][1,K] 内的整数;
  • 对于每个 i=1,,Ki=1,\dots,K,数 iiPP 中出现了 aia_i 次;
  • 对于 PP 中的每一项,都存在一个长度为 KK连续子序列包含该项,且该子序列构成 1,,K1,\dots,K 的排列。
3
2 4 3
2 1 3 2 2 3 1 2 3
4
3 2 3 2
1 2 3 4 1 3 1 2 4 3
5
3 1 4 1 5
-1

提示

制約

  • 1  K  100 1\ \leq\ K\ \leq\ 100
  • $ 1\ \leq\ a_i\ \leq\ 1000\ \quad\ (1\leq\ i\leq\ K) $
  • a1 +  + aK 1000 a_1\ +\ \dots\ +\ a_K\leq\ 1000
  • 入力はすべて整数である

Sample Explanation 1

例えば、5 5 項目の 2 2 は、5,6,7 5,6,7 項目からなる部分列 (2,3,1) (2,3,1) に含まれます。