#P15612. [2024年保加利亚国家队组队赛Junior]alley林荫道

[2024年保加利亚国家队组队赛Junior]alley林荫道

题目描述

随着即将到来的选举,鲁塞市开始讨论在城中建设一座“多瑙河花园”。花园的设计方案中,在中央有一条很长的林荫道,林荫道两侧都要种上树。

鲁塞市政府从 N 种树中各选了一棵进行种植。第 i 种树长成后的高度为 h_i

这些树将被分配到林荫道的两侧,并且林荫道的每一侧至少都要有一棵树。若某一侧种下的树的高度序列为:

h_{i_1}, h_{i_2}, ..., h_{i_k}

则要求该序列满足:

  1. 该序列是非递减的,即对于每个 1 <= j < k,都有 h_{i_j} <= h_{i_{j+1}}

  2. 相邻两项的差都相等,即对于每个 1 < j < k,都有:

    h_{i_{j+1}} - h_{i_j} = h_{i_j} - h_{i_{j-1}}

也就是说,林荫道每一侧的树高序列都必须构成一个非递减等差数列

请你编写程序 alley,根据这 N 种树的高度,求出一种可行的分配方案;如果不存在满足要求的分配方案,则输出 -1

输入格式

第一行输入一个正整数 N,表示树的种类数。

第二行输入 N 个正整数,表示这些树长成后的高度。

输出格式

如果不存在可行分配方案,输出一行 -1

否则:

  • 第一行输出两个整数 c1c2,表示林荫道两侧树的数量;
  • 第二行输出 c1 个整数,按非递减顺序给出其中一侧树的高度;
  • 第三行输出 c2 个整数,按非递减顺序给出另一侧树的高度。

如果有多种可行方案,输出任意一种即可。

数据范围

  • 2 <= N <= 10^5
  • 1 <= 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