#P15490. [IOI 2004] Polygon

[IOI 2004] Polygon

说明

多边形由其边界上或边界内的所有点组成。

如果对于一个多边形的任意两点 XXYY,连接 XXYY 的线段位于多边形内部,那么这个多边形是一个凸多边形。本任务中的所有多边形均为至少包含两个顶点,且多边形中的所有顶点互不相同且坐标均为整数。多边形的顶点不会出现三点共线。下文中的“多边形”一词均指此类多边形。

给定两个多边形 AABBAABB 的闵可夫斯基和包含所有形如 (x1+x2,y1+y2)(x1+x2, y1+y2) 的点的集合,其中 (x1,y1)(x1, y1) 为集合 AA 中的一点,(x2,y2)(x2, y2) 为集合 BB 中的一点。事实证明多边形的闵可夫斯基和也是一个多边形。下图展示了一个示例:两个三角形及其闵可夫斯基和。

我们研究了闵可夫斯基和的逆运算。对于给定的多边形 PP,我们正在寻找两个多边形 AABB,满足:

  • PPAABB 的闵可夫斯基和,
  • AA2244 个不同的顶点,即它是一条线段(22 个顶点),一个三角形(33 个顶点)或一个四边形(44 个顶点),
  • AA 应该有尽可能多的顶点,即:
    • 如果可能的话,AA 应该是四边形,
    • 如果 AA 不能是四边形而可能是三角形,它应该是三角形,
    • 否则它应该是一条线段。

显然,AABB 都不能等于 PP,因为这样另一个就必须等于一个点,就不是合法的多边形。

您会收到一组输入文件,每个文件都包含一个多边形 PP 的描述。

您应该按照上述要求找到多边形 AABB,并创建一个输出文件给出 AABB 的描述。对于给定的输入文件,多边形 AABB 总是存在。如果有许多正确的结果,您应该找到并输出其中一个。

你不应该提交任何程序,只应该提交输出文件。

输入格式

在名为 polygon1.inpolygon10.in 的文本文件中为您提供了 10 个问题实例,其中 polygon 后的数字是输入编号。

每个输入文件的格式如下。第一行包含一个整数 NN,表示多边形 PP 的顶点数。

以下 NN 条线以逆时针顺序描述顶点,一个顶点一行。第 I+1I+1 行(对于 I=1,2,,NI=1,2,\ldots,N)包含两个整数 XIX_IYIY_I,用空格隔开,表示多边形第 II 个顶点的坐标。所有输入坐标均为非负整数。

输出格式

您需要提交 1010 个与给定输入文件相对应的输出文件,这些文件描述了所需的多边形 AABB。第一行包含文本:

其中整数 I(1I10)I(1\le I\le10) 是相应输入文件的编号。

输出格式与输入格式类似。

第二行包含一个整数 NAN_A,表示 AA 中的顶点数(2NA42\le N_A\le 4)。以下 NAN_A 行按逆时针顺序描述了 AA 的顶点,每行一个顶点。第 I+2I+2 行(对于 I=1,2,,NAI=1,2,\ldots,N_A)包含由空格分隔的两个整数 XXYY,表示多边形 AA 的第 II 个顶点的坐标。

NA+3N_A+3 行包含一个整数 NBN_B,表示 BB 中的顶点数(2NB2\le N_B)。以下 NBN_B 行按逆时针顺序描述了 BB 的顶点,每行一个顶点。第 NA+J+3N_A+J+3 行(对于 J=1,2,,NBJ=1,2,\ldots,N_B)包含由空格分隔的两个整数 XXYY,表示多边形 BB 的第 JJ 个顶点的坐标。

5
0 1
0 0
2 0
2 1
1 2 
3
0 0
2 0
1 1
2
0 1
0 0 

或

3
0 0
1 0
1 1
3
0 1
0 0
1 0

提示

样例解释

对于样例输入,两种输出都是正确的,因为两种情况 AA 都是三角形,且 AA 不能是四边形。