CF1227B Box
题目描述
排列 $ p $ 是一个 $ p=[p_1, p_2, \dots, p_n] $ 的广泛数列,包括 $ n $ 个各不相同(唯一)的从1到n的正整数。比如,这些数列是排列:$ [3, 4, 1, 2] $ , $ [1] $ , $ [1, 2] $。这些不是排列:$ [0] $ , $ [1, 2, 1] $ , $ [2, 3] $ , $ [0, 1, 2] $ 。
重要的钥匙在一个需要你打开的锁上的盒子里。你需要输入密码来打开它。密码是一个长度为 $n$ 的序列。
你不知道这个排列,你只知道这个排列前缀的最大值。定义如下:
- $ q_1=p_1 $ ,
- $ q_2=\max(p_1, p_2) $ ,
- $ q_3=\max(p_1, p_2,p_3) $ ,
- ...
- $ q_n=\max(p_1, p_2,\dots,p_n) $ .
你想要把所有可能的排列都构造出来(即任何这样的排列,使得计算出的 $q$ 与给出的数组相同)。
输入格式
输入的第一行包括一个整数 $ t $ ( $ 1 \le t \le 10^4 $ ),$t$ 为输入中包含的数据组数。接着输入 $t$ 组数据。
一组数据的第一行包含一个整数 $ n $ $ (1 \le n \le 10^{5}) $,$n$ 为排列 $p$ 中元素的个数。
一组数据的第二行包含 $n$ 个整数 $ q_1, q_2, \dots, q_n $ $ (1 \le q_i \le n) $ ,为秘密排列的数组 $q$。保证对于每个 $ i $ ( $ 1 \le i < n $ ),均有 $ q_i \le q_{i+1} $ 。
输入中每组数组 $n$ 的总和不超过 $ 10^5 $。
输出格式
对于每组数据,输出:
- 如果不可能找到满足的排列 $p$,输出 "-1"(不包括引号)
- 否则,输出n个不同的整数 $ p_1, p_2, \dots, p_n $ ( $ 1 \le p_i \le n $ )。如果有多组可能的答案,你可以输出任何一组。
说明/提示
样例的第一组数据中, $ [1,3,4,5,2] $ 是唯一一组可能的答案:
- $ q_{1} = p_{1} = 1 $ ;
- $ q_{2} = \max(p_{1}, p_{2}) = 3 $ ;
- $ q_{3} = \max(p_{1}, p_{2}, p_{3}) = 4 $ ;
- $ q_{4} = \max(p_{1}, p_{2}, p_{3}, p_{4}) = 5 $ ;
- $ q_{5} = \max(p_{1}, p_{2}, p_{3}, p_{4}, p_{5}) = 5 $ .
可以证明样例的第二组数据没有答案。
翻译来自 @[carreye](https://www.luogu.com.cn/user/188360)