#P17483. PM7877凸多边形补全

PM7877凸多边形补全

题目描述

称一个整数数组为凸数组,当且仅当它满足以下条件:

  1. 数组长度为偶数,且在 665050 之间;
  2. 每个元素都是 115050 之间的整数;
  3. 将数组依次解释为点 (x1,y1),(x2,y2),,(xn,yn)(x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n),这些点恰好是某个凸多边形的顶点;
  4. 顶点按顺时针或逆时针顺序给出;
  5. 任意三个连续顶点不共线,其中也包括 (n,1,2)(n,1,2)(n1,n,1)(n-1,n,1) 这两种跨越首尾的情况。

现在给定一个整数数组 beginning。你需要在它的末尾追加一个整数数组 ending,使拼接后的整个数组成为凸数组。

要求首先使 ending 的长度最短;若存在多个长度相同的方案,则选择字典序最小的 ending。若不存在任何可行方案,则答案为只包含一个整数 -1 的数组。

输入格式

第一行输入一个整数 mm,表示 beginning 的长度。

m>0m>0,第二行输入 mm 个整数,依次表示 beginning

输出格式

第一行输出一个整数 kk,表示答案数组 ending 的长度。

k>0k>0,第二行输出这 kk 个整数。

如果 beginning 本身已经是合法凸数组,则输出 k=0k=0;如果无解,则输出长度为 11 的数组 -1

数据范围

  • 0m500\le m\le 50
  • beginning 中每个整数均在 115050 之间。

样例

输入

4
1 1 2 2

输出

2
1 2