编程题
### 问题描述 小然是一名音乐家,他创作了一首美妙的乐曲。乐曲由一系列的音符组成,每个音符都有它的频率,组成了音乐的旋律。小然用一个数组 $A$ 表示他的乐谱,其中 $A_i$ 表示音符的频率。 然而,有一天他的乐谱不翼而飞,只留下了一个频率数组 $B$,其中 $B_i$ 表示音符 $A_i$ 在乐谱中出现的频率。 小然想要重构他的乐谱,但他希望重构后的乐谱能够尽可能保持旋律的美感。他决定用一个新的数组 $A$ 来表示乐谱,要求: - 乐谱中的音符频率范围为 $1 \leq A_i \leq 10^5$; - 新的乐谱的频率数组需要和丢失的乐谱的频率数组完全一致; - 如果有多种可能的乐谱,小然希望选择字典序最小的那一种。 如果无法重构乐谱,小然会感到沮丧并输出 $-1$。 请你帮助小然寻回他失去的乐谱。 ### 输入格式 输入的第一行将包含一个单独的整数 $T$,表示测试用例的数量。 每个测试用例包括两行输入: - 测试用例的第一行包含一个单独的整数 $N$,表示数组的大小。 - 测试用例的下一行包含 $N$ 个由空格分隔的整数 $B_1, B_2, \ldots, B_N$,表示频率数组。 ### 输出格式 对于每个测试用例,输出一行,包含 $N$ 个由空格分隔的整数 $A_1, A_2, \ldots, A_N$,表示字典序最小的乐谱。如果无法重构乐谱,输出 $-1$。 ### 样例输入 ```text 5 5 2 3 3 3 2 5 1 1 1 1 1 5 5 5 5 5 5 3 1 2 4 8 1 3 2 3 2 2 2 3 ``` ### 样例输出 ```text 1 2 2 2 1 1 2 3 4 5 1 1 1 1 1 -1 1 2 3 2 3 4 4 2 ``` ### 说明 在第一个测试用例中,字典序最小的乐谱是 $[1,2,2,2,1]$。音符 $1$ 和 $5$ 的频率为 $2$,而音符 $2,3,4$ 的频率为 $3$。 在第二个测试用例中,字典序最小的乐谱是 $[1,2,3,4,5]$。小然的乐谱中每个音符的频率都是 $1$。 在第三个测试用例中,字典序最小的乐谱是 $[1,1,1,1,1]$。小然的乐谱中每个音符的频率都是 $5$。 在第四个测试用例中,无法重构乐谱。 在第五个测试用例中,字典序最小的乐谱是 $[1,2,3,2,3,4,4,2]$。 ### 评测数据范围 $1 \leq T \leq 10^3$。 $1 \leq N \leq 10^5$。 $1 \leq B_i \leq 10^5$。 所有测试用例中的 $N$ 的总和不超过 $10^5$。
查看答案
赣ICP备20007335号-2