#P2622. Convex hull

Convex hull

描述
给定平面上的一个有限点集MM,该平面采用笛卡尔坐标系。集合MMwell-formed凸包是满足以下条件的最小集合(相对于包含关系):

  • 包含MM
  • 边界由闭合折线围成;
  • 折线的所有线段必须与坐标轴平行或倾斜4545^\circ

你的任务是找到给定集合MM的well-formed凸包。

输入
第一行为一个整数NN1N1000001 \leq N \leq 100\,000),表示后续有NN行数据。接下来的每行包含集合中一个点的坐标(两个整数,由若干空格分隔,每个数的取值范围为0x,y10000 \leq x, y \leq 1000)。集合中可能存在重叠的点,即不同行可能包含相同的坐标。

输出
按逆时针顺序输出凸包边界折线的顶点序列。第一个顶点可以是任意顶点,每行输出一个顶点的坐标(两个整数,用空格分隔)。每个顶点只能输出一次,且不能存在三个连续顶点共线的情况。

输入样例 1

4
3 3
3 1
2 2
4 2

输出样例 1

3 1
4 2
3 3
2 2

题目来源
1998年乌拉尔大学生程序设计竞赛