CF1906E Merge Not Sort
题目描述
你正在研究归并排序算法。归并排序是一种基于分治思想的排序算法。它通过将一个数组分成两个长度相等的子数组,分别对每个子数组进行排序,然后将已排序的子数组合并,最终形成排序后的数组。
你对归并过程特别感兴趣。常见的归并实现方法是:通过迭代比较两个子数组的首元素,将较小的元素移动到新的合并数组中。更准确地说,归并算法可以用如下伪代码表示:
```
Merge(A[1..N], B[1..N]):
C = []
i = 1
j = 1
while i
输入格式
第一行包含一个整数 $N$($1 \leq N \leq 1000$)。
第二行包含 $2 \cdot N$ 个整数 $C_i$。数组 $C$ 是 $1$ 到 $2 \cdot N$ 的一个排列。
输出格式
如果无法构造出满足条件的两个长度为 $N$ 的数组 $A$ 和 $B$,使得 $\text{Merge}(A, B) = C$,则输出 $-1$。
否则,输出数组 $A$ 和 $B$,每行一个数组,均包含 $N$ 个整数。如果有多组答案,输出任意一组均可。
说明/提示
样例输入输出 #1 说明
$A = [3, 1, 4]$,$B = [5, 2, 6]$ 也是正确答案。
样例输入输出 #2 说明
$A = [1, 2, 3, 4]$,$B = [5, 6, 7, 8]$ 也是正确答案。
由 ChatGPT 4.1 翻译