#26727. 分治拆分(归并排序前置题)

分治拆分(归并排序前置题)

题目描述

傅雨芊刚学习了归并排序的原理,她想先用代码实现分治拆分的这个过程,她很快的实现了,你能解决下面这个问题吗?

利用分治法对输入的 NN 个整数进行拆分,输出拆分的全过程。

拆分规则:每次把当前区间从中间位置划分为左右两段,左半段 / 右半段的格式输出;递归拆分直到区间只剩单个数字时不再拆分。

输入格式

第一行一个正整数 NN ,代表数列长度。

第二行 NN 个整数 AiA_i ,为原始数列。

输出格式

按分治拆分顺序多行输出,每次拆分用/分隔左右两个子序列,参照样例格式。

8
7 5 3 1 8 9 4 2
7 5 3 1 / 8 9 4 2
7 5 / 3 1
7 / 5
3 / 1
8 9 / 4 2
8 / 9
4 / 2

数据范围

1N1051 \le N \le 10^51Ai1091\le A_i \le 10^9

题意说明

  1. 分治拆分逻辑:[l,r]区间, mid=(l+r)/2mid=(l+r)/2 ,拆分为 [l,mid][l,mid][mid+1,r][mid+1,r]

  2. 只要区间元素个数 2\ge2 ,就先打印当前拆分的左右序列(空格分隔元素、/隔开两段),再递归拆左区间、递归拆右区间;

  3. 区间只剩1个元素,终止递归,无输出。