#1858. 找边界

找边界

题目描述

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

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

●不会出现两条线段相交(有公共的端点除外)。

●相邻的两个节点不重合。

●相邻的两条边不在同一条直线上。

●当你沿着边界前进时,内部区域总是在你的左边。

●起始点为横坐标最小的点,若这样的点不止一个,则选其中纵坐标最小的点。

img

输入格式

输入文件的第一行包含一个整数 m(3\red{m(3≤}m\red{m≤}100)\red{100)}——在原折线中的节点数。以下的 n\red{n}行,每行有两个整数xi,yi(0\red{x_i,y_i(0≤}xi,yi\red{x_i,y_i≤}100),\red{100),}表示该点的坐标。所有的点都是不同的并 且没有三点共线的情况。所有的相临边不在同一条直线上。

输出格式

输出文件第一行是整数m\red{m}——边界上的点数。以下的m\red{m}行都是点的坐标。所有的 坐标精确到小数点后4\red{4}位。

样例

输入样例

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