#P17483. PM7877凸多边形补全
PM7877凸多边形补全
题目描述
称一个整数数组为凸数组,当且仅当它满足以下条件:
- 数组长度为偶数,且在 到 之间;
- 每个元素都是 到 之间的整数;
- 将数组依次解释为点 ,这些点恰好是某个凸多边形的顶点;
- 顶点按顺时针或逆时针顺序给出;
- 任意三个连续顶点不共线,其中也包括 和 这两种跨越首尾的情况。
现在给定一个整数数组 beginning。你需要在它的末尾追加一个整数数组 ending,使拼接后的整个数组成为凸数组。
要求首先使 ending 的长度最短;若存在多个长度相同的方案,则选择字典序最小的 ending。若不存在任何可行方案,则答案为只包含一个整数 -1 的数组。
输入格式
第一行输入一个整数 ,表示 beginning 的长度。
若 ,第二行输入 个整数,依次表示 beginning。
输出格式
第一行输出一个整数 ,表示答案数组 ending 的长度。
若 ,第二行输出这 个整数。
如果 beginning 本身已经是合法凸数组,则输出 ;如果无解,则输出长度为 的数组 -1。
数据范围
- ;
beginning中每个整数均在 到 之间。
样例
输入
4
1 1 2 2
输出
2
1 2