#P17058. [SGU290] Defend the Milky Way

[SGU290] Defend the Milky Way

题目描述

公元 22204 年,外星入侵者威胁着银河系。人类准备使用一种巨型激光网进行防御:每张激光网是一个巨大的激光三角形,三角形的三个顶点必须是恒星系,并且每个恒星系至多建造一座激光控制塔。激光网的造价与三角形面积成正比,而控制塔便宜得多。

为了以最低代价包围所有恒星,激光三角形应当构成全部恒星三维凸包的表面。如果某个恒星系位于某个激光三角形内部或边界上,也必须在那里建造控制塔,防止它被激光摧毁。

给定所有恒星系的名称和三维坐标,请输出所有需要建造控制塔的恒星系。等价地,你需要找出位于这些点的三维凸包表面上的所有输入点;凸包顶点、棱上的点和面内的点都要计入。若点集的仿射维数不足 3,则所有输入点都位于其边界上。

输入格式

第一行包含一个整数 nn,表示恒星系数量。

接下来 nn 行,每行依次给出恒星系名称和三个笛卡尔坐标 x,y,zx,y,z。名称可包含 ASCII 码 3232255255 的字符,名称长度不超过 200200;名称与 xx、相邻坐标之间各由一个空格分隔。所有坐标均为整数。

输出格式

第一行输出需要建造的控制塔数量 qq

接下来 qq 行按字典序输出对应恒星系的名称。

数据范围

  • 1n1001\le n\le100
  • x,y,z10000|x|,|y|,|z|\le10000

样例 1

2
Qc 0 0 0
He 10000 10000 10000
2
He
Qc

样例 2

7
Altair 2 0 0
Jupiter 0 2 0
Orion 0 0 2
Wx 1 1 0
Statz 0 -5 -5
Unreal -5 0 0
Qc -1 -1 0
6
Altair
Jupiter
Orion
Statz
Unreal
Wx