#1266. 【COMP350105期末实验】P2 分治凸包

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:无测试数据
上传者: JamesHelium

题目描述

说明

本系列题目为 2020 年为计算机试验班 91 开设的 COMP350105 “算法设计与分析” 课程之期末实验题目。 本题目的规定与要求不代表课程实验中的要求,本题目的得分不代表实验得分,本题目的数据也不代表课程期末实验的测试方式。 而且在本 OJ 上的程序正确性、效率性要求往往高于课程得分要求,但代码可读性、程序思想要求却低于课程得分要求。本题目为大家提供严谨的测试,请各位酌情根据自己能力解答。

题面原文

用分分治法编写一个求解凸包问题的算法,并测试算法的正确性。【注:凸包问题】给定平面上 个点,从中找出一个最小点集,使该点集所组成的凸多边形包围所有的 个点。

本题约定

给定平面点集在二维笛卡尔坐标系上,并且对任意点 均为整数。

输入格式

每次测试仅有一组数据

第一行包含一个整数 , 表示待求点集的大小

第二行至第 行,每行包含三个整数,分别表示 ,其中 为该点的编号,,按 从小到大输入

输出格式

第一行包含一个整数 , 表示待求点集凸包的大小

第二行至第 行,每行包含三个整数,分别表示 ,其中 为凸包上点的编号,,按 从小到大输出

样例

输入样例 1

4
1 3 3
2 -1 0
3 0 0
4 0 -3

输出样例 1

3
1 3 3
2 -1 0
4 0 -3

数据范围与提示

保证没有任意三点在一条直线上