2619: 例5.8-1 找边界

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:0 解决:0

题目描述

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

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

 

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

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

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

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

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



输入

输入文件的第一行包含一个整数n3n100)——在原折线中的节点数。以下的n行,每行有两个整数xiyi0xiyi100),表示该点的坐标。所有的点都是不同的并且没有三点共线的情况。所有的相临边不在同一条直线上。

输出

输出文件第一行是整数m——边界上的点数。以下的m行都是点的坐标。所有的坐标精确到小数点后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