CF1385B Restore the Permutation by Merger

题目描述

一个长度为 $n$ 的排列是一个由 $1$ 到 $n$ 的整数构成的长度为 $n$ 的序列,且每个数字恰好出现一次。例如,$[1]$、$[4, 3, 5, 1, 2]$、$[3, 2, 1]$ 都是排列,而 $[1, 1]$、$[0, 1]$、$[2, 2, 1, 4]$ 不是排列。 现在有一个排列 $p[1\dots n]$。它与自身进行了合并。也就是说,我们取两个 $p$,将第二个 $p$ 的元素插入到第一个 $p$ 中,且保持各自元素的相对顺序。最终得到一个长度为 $2n$ 的序列。 例如,如果 $p=[3, 1, 2]$,一些可能的合并结果是:$[3, 1, 2, 3, 1, 2]$、$[3, 3, 1, 1, 2, 2]$、$[3, 1, 3, 1, 2, 2]$。以下序列不是合法的合并结果:$[1, 3, 2, 1, 2, 3]$、$[3, 1, 2, 3, 2, 1]$、$[3, 3, 1, 2, 2, 1]$。 再比如,如果 $p=[2, 1]$,可能的合并结果有:$[2, 2, 1, 1]$、$[2, 1, 2, 1]$。以下序列不是合法的合并结果:$[1, 1, 2, 2]$、$[2, 1, 1, 2]$、$[1, 2, 2, 1]$。 你的任务是根据给定的合并结果序列 $a$,还原出原始排列 $p$。保证答案存在且唯一。 你需要回答 $t$ 组独立的测试用例。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 400$),表示测试用例的数量。接下来是 $t$ 组测试用例。 每组测试用例的第一行包含一个整数 $n$($1 \le n \le 50$),表示排列的长度。第二行包含 $2n$ 个整数 $a_1, a_2, \dots, a_{2n}$($1 \le a_i \le n$),其中 $a_i$ 是序列 $a$ 的第 $i$ 个元素。保证数组 $a$ 是某个排列 $p$ 与自身合并后的结果。

输出格式

对于每个测试用例,输出一行答案:$n$ 个整数 $p_1, p_2, \dots, p_n$($1 \le p_i \le n$),表示原始排列。保证答案存在且唯一。

说明/提示

由 ChatGPT 4.1 翻译