3744: 重定向(第三轮02)
题目描述
给定一个长度为n 的正整数序列,其中有些位置为空,另一些位置则已经填好了 数字。
你需要删去序列中的一个位置(可以是空的位置,也可以不是), 然后在剩余的 位置中填入数字,满足:
1.所有数字均为[1, n]之间的正整数,且两两不同(保证原序列已经填入的数字也 满足该条件)
2.该序列的字典序最小
请输出这个字典序最小的序列
对于两个等长的数字序列A, B,称A的字典序小于B,当且仅当存在位置i,满足 Ai < Bi,且对于任意1 ≤ j < i,满足Aj = Bj 。
输入
第一行数据组数T ,代表有T组数据
对于每组数据,第一行一个正整数n,代表序列的长度
接下来一行n个整数,代表该序列A。若Ai = 0,则表示该位置尚未被填入数字。 否则表示该位置已经填入数字。
输出
对于每组数据, 一行n − 1个正整数, 表示删去一个位置后再填入数字的最小字典序
样例输入 复制
2
3
2 0 3
4
4 0 0 2
样例输出 复制
1 3
1 3 2
提示
【样例 1 输入】
2
3
2 0 3
4
4 0 0 2
【样例 1 输出】
1 3
1 3 2
【样例 2 输入】
2
7
3 0 4 0 1 0 2
6
1 3 4 5 2 6
【样例 2 输出】
3 1 4 5 6 2
1 3 4 2 6
【数据范围】
对于20%的数据,2 ≤ n ≤ 8,1 ≤ T ≤ 5
对于30%的数据,2 ≤ n ≤ 100,1 ≤ T ≤ 5
对于50%的数据,2 ≤ n ≤ 2000,1 ≤ T ≤ 10 对于另外5%的数据,不存在空的位置
对于另外15%的数据,空的位置数目 ≤ 50
对于100%的数据,2 ≤ n ≤ 2 × 10^5 ,2 ≤ Σn ≤ 10^6 ,1 ≤ T ≤ 100