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 翻译