QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100

#1449. 山脉天际线

统计

有时,一座高山看起来可能比一座低山更小,因为它距离更远。低山甚至可能完全遮挡住高山。这使得识别哪座山是哪座山变得有些棘手。你的任务是识别观察者可见的山峰。

对于本题,假设世界是平坦的。每座山都是一个坡度为 45 度的向下倾斜的圆锥体,因此每座山底座(海拔 0 处)的半径等于其高度。不同山的圆锥体可以相互交叉。每座山的山峰由三维笛卡尔坐标系中的三个整数坐标给出,其中 $-10000 \le x, y \le 10000$,$0 < z \le 10000$。这里,$z$ 是山峰的海拔高度。观察者位于坐标 $(0, 0, 0)$。观察者和任何山峰都不在任何其他山的圆锥体内部(或边界上)。如果一个山峰在观察者眼中恰好位于另一座山的边缘或山峰之后,则认为它不可见。

输入格式

第一行包含一个整数 $1 \le n \le 1000$,表示山的数量。接下来的 $n$ 行,每行包含三个空格分隔的整数 $-10000 \le x, y \le 10000$,$1 \le z \le 10000$,表示每座山的山峰坐标,随后是一个最多 30 个大写字母组成的字符串,表示山的名称。所有山名都是唯一的。

输出格式

按顺时针顺序,每行输出一个观察者可见的山峰名称。即从正 $y$ 轴方向开始,然后转向正 $x$ 轴,接着转向负 $y$ 轴,再转向负 $x$ 轴,最后回到正 $y$ 轴。恰好位于正 $y$ 轴上的山峰应列在列表的开头,而不是结尾。如果两个山峰在观察者眼中恰好重叠(一个在另一个的正上方),则先列出较高的那个。

样例

样例输入 1

3
0 10000 8849 EVEREST
10000 0 5959 LOGAN
0 -10000 4808 BLANC

样例输出 1

EVEREST
LOGAN
BLANC

样例输入 2

6
8 0 5 FUJI
9 1 5 MATTERHORN
9 0 5 KEBNEKAISE
9 -1 5 FAGRADALSFJALL
16 0 10 KILIMANJARO
120 0 80 DENALI

样例输出 2

MATTERHORN
DENALI
FUJI
FAGRADALSFJALL

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.