#P1718. 找边界

找边界

题目描述

一些闭合的折线(这些折线可能相交)将平面分成一些区域。其中有个区域是没有边界的 -- 就是折线的外部区域。所有的有边界的区域和折线本身构成了内部区域(图中的阴影部分)。内部区域的边界也是一个折线(图中的粗线)。你的任务就是找到给定折线的边界。

在确立了起始点以后,为了保证解的唯一,我们要求输出满足:

  • 不会出现两条线段相交(有公共的端点除外)。
  • 相邻的两个节点不重合。
  • 相邻的两条边不在同一条直线上。
  • 当你沿着边界前进时,内部区域总是在你的左边。
  • 起始点为横坐标最小的点,若这样的点不止一个,则选其中纵坐标最小的点。

输入格式

第一行包含一个整数 n (3n<100)n\ (3≤n<100) -- 在原折线中的节点数。

以下的 nn 行,每行有两个整数 xi,yix_i,y_i0xi,yi1000≤x_i,y_i≤100,表示该点的坐标。所有的点都是不同的并且没有三点共线的情况。所有的相临边不在同一条直线上。

输出格式

第一行是整数 mm,表示边界上的点数。以下的 mm 行都是点的坐标。所有的坐标精确到小数点后 44 位。

10
4 9
9 9
12 4
10 2
9 5
14 10
14 5
10 9
11 4
4 4
13
4.0000 4.0000
9.3333 4.0000
10.0000 2.0000
12.0000 4.0000
10.5000 6.5000
11.5000 7.5000
14.0000 5.0000
14.0000 10.0000
11.5000 7.5000
10.0000 9.0000
10.5000 6.5000
9.0000 9.0000
4.0000 9.0000