#5364. [USACO24OPEN] Farmer John's Favorite Permutation B

[USACO24OPEN] Farmer John's Favorite Permutation B

题目描述

Farmer John 有一个长为 NN(2≤N≤1052\le N\le 10^5)的排列 pp,包含从 11 到 NN 的每个正整数恰好一次。然而,Farmer Nhoj 闯入了 FJ 的牛棚并拆散了 pp。为了不至于太过残忍,FN 写了一些能够帮助 FJ 重建 pp 的提示。当 pp 中剩余多于一个元素时,FN 会执行以下操作:

令 pp 的剩余元素为 p1′,p2′,…,pn′p_1^\prime,p_2^\prime,\ldots,p_n^\prime,

  • 如果 p1′>pn′p_1^\prime>p_n^\prime,他写下 p2′p_2^\prime 并从排列中删除 p1′p_1^\prime。
  • 否则,他写下 pn−1′p_{n−1}^\prime 并从排列中删除 pn′p_n^\prime。

最终,Farmer Nhoj 将按顺序写下 N−1N−1 个整数 h1,h2,…,hN−1h_1,h_2,\ldots,h_{N−1}。给定 hh,Farmer John 希望得到你的帮助重建与 Farmer Nhoj 的提示相一致的最小字典序 pp,或者判断 Farmer Nhoj 一定犯了错误。我们知道,给定两个排列 pp 和 p′p^\prime,如果在第一个两者不同的位置 ii 处有 pi<pi′p_i<p_i^\prime,则 pp 的字典序小于 p′p^\prime。

输入格式

每个测试点包含 TT 个独立的测试用例(1≤T≤101\le T\le 10)。每个测试用例的描述如下:

第一行包含 NN。

第二行包含 N−1N−1 个整数 h1,h2,…,hN−1h_1,h_2,\ldots,h_{N−1}(1≤hi≤N1\le h_i\le N)。

输出格式

输出 TT 行,每个测试用例一行。

如果存在与 hh 相一致的 1…N1\ldots N 的排列 pp,输出字典顺序最小的 pp。如果不存在这样的 pp,输出 −1-1。

输入输出样例 #1

输入 #1

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

输出 #1

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

说明/提示

对于第四个测试用例,如果 p=[3,1,2,4]p=[3,1,2,4] 则 FN 将写下 h=[2,1,1]h=[2,1,1]。

p' = [3,1,2,4]
p_1' < p_n' -> h_1 = 2
p' = [3,1,2]
p_1' > p_n' -> h_2 = 1
p' = [1,2]
p_1' < p_n' -> h_3 = 1
p' = [1]

注意排列 p=[4,2,1,3]p=[4,2,1,3] 也会产生同样的 hh,但 [3,1,2,4][3,1,2,4] 字典序更小。

对于第二个测试用例,不存在与 hh 相一致的 pp;p=[1,2]p=[1,2] 和 p=[2,1]p=[2,1] 均会产生 h=[1]h=[1],并非 h=[2]h=[2]。

测试点性质

  • 测试点 22:N≤8N\le 8。
  • 测试点 3−63-6:N≤100N\le 100。
  • 测试点 7−117-11:没有额外限制。