#P15612. [2024年保加利亚国家队组队赛Junior]alley林荫道
[2024年保加利亚国家队组队赛Junior]alley林荫道
题目描述
随着即将到来的选举,鲁塞市开始讨论在城中建设一座“多瑙河花园”。花园的设计方案中,在中央有一条很长的林荫道,林荫道两侧都要种上树。
鲁塞市政府从 N 种树中各选了一棵进行种植。第 i 种树长成后的高度为 h_i。
这些树将被分配到林荫道的两侧,并且林荫道的每一侧至少都要有一棵树。若某一侧种下的树的高度序列为:
h_{i_1}, h_{i_2}, ..., h_{i_k},
则要求该序列满足:
-
该序列是非递减的,即对于每个
1 <= j < k,都有h_{i_j} <= h_{i_{j+1}}; -
相邻两项的差都相等,即对于每个
1 < j < k,都有:h_{i_{j+1}} - h_{i_j} = h_{i_j} - h_{i_{j-1}}。
也就是说,林荫道每一侧的树高序列都必须构成一个非递减等差数列。
请你编写程序 alley,根据这 N 种树的高度,求出一种可行的分配方案;如果不存在满足要求的分配方案,则输出 -1。
输入格式
第一行输入一个正整数 N,表示树的种类数。
第二行输入 N 个正整数,表示这些树长成后的高度。
输出格式
如果不存在可行分配方案,输出一行 -1。
否则:
- 第一行输出两个整数
c1和c2,表示林荫道两侧树的数量; - 第二行输出
c1个整数,按非递减顺序给出其中一侧树的高度; - 第三行输出
c2个整数,按非递减顺序给出另一侧树的高度。
如果有多种可行方案,输出任意一种即可。
数据范围
2 <= N <= 10^51 <= h_i <= 10^9
子任务
| 子任务 | 分值 | N |
其他限制 |
|---|---|---|---|
| 1 | 0 | - | 样例测试 |
| 2 | 20 | <= 15 |
- |
| 3 | 30 | <= 300 |
|
| 4 | 20 | <= 10^5 |
保证存在一种可行方案,且 c1 = c2 |
| 5 | 30 | - |
对于某个子任务,只有通过该子任务中的所有测试点,才能获得该子任务的分数。
样例 1
输入
4
1 3 2 4
输出
2 2
1 2
3 4
样例 2
输入
6
23 4 7 6 8 15
输出
3 3
4 6 8
7 15 23
样例 3
输入
6
1 2 3 7 9 10
输出
-1