#P15686. [ICPC 2023 Jakarta R] Merge Not Sort
[ICPC 2023 Jakarta R] Merge Not Sort
说明
你正在研究归并排序算法。归并排序是一种基于分治思想的排序算法。它通过将一个数组分成两个长度相等的子数组,分别对每个子数组进行排序,然后将已排序的子数组合并,最终形成排序后的数组。
你对归并过程特别感兴趣。常见的归并实现方法是:通过迭代比较两个子数组的首元素,将较小的元素移动到新的合并数组中。更准确地说,归并算法可以用如下伪代码表示:
Merge(A[1..N], B[1..N]):
C = []
i = 1
j = 1
while i <= N AND j <= N:
if A[i] < B[j]:
append A[i] to C
i = i + 1
else:
append B[j] to C
j = j + 1
while i <= N:
append A[i] to C
i = i + 1
while j <= N:
append B[j] to C
j = j + 1
return C
在你的研究过程中,你希望了解当数组 和 不一定有序时归并算法的行为。例如,如果 ,,那么 。
为了进一步加深对归并算法的理解,你决定研究如下问题。给定一个长度为 的数组 ,其中 是 到 的一个排列。请构造任意两个长度为 的数组 和 ,使得 ,或者判断是否无法做到。
输入格式
第一行包含一个整数 ()。
第二行包含 个整数 。数组 是 到 的一个排列。
输出格式
如果无法构造出满足条件的两个长度为 的数组 和 ,使得 ,则输出 。
否则,输出数组 和 ,每行一个数组,均包含 个整数。如果有多组答案,输出任意一组均可。
3
3 1 4 5 2 6
3 1 6
4 5 2
4
1 2 3 4 5 6 7 8
2 3 5 7
1 4 6 8
2
4 3 2 1
-1
提示
样例输入输出 #1 说明
, 也是正确答案。
样例输入输出 #2 说明
, 也是正确答案。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号