atcoder#AGC046E. [AGC046E] Permutation Cover

[AGC046E] Permutation Cover

配点 : 15001500

問題文

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

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

制約

  • 1K1001 \leq K \leq 100
  • 1ai1000(1iK)1 \leq a_i \leq 1000 \quad (1\leq i\leq K)
  • a1++aK1000a_1 + \dots + a_K\leq 1000
  • 入力はすべて整数である

入力

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

KK

a1a_1 a2a_2 \dots aKa_K

出力

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

3
2 4 3
2 1 3 2 2 3 1 2 3

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

4
3 2 3 2
1 2 3 4 1 3 1 2 4 3
5
3 1 4 1 5
-1