P6952 [NEERC 2017] Archery Tournament

题目描述

你被邀请参加一年一度的射箭比赛。你将与来自整个北欧亚的最佳射手竞争。今年引入了一种新的比赛类型,射击场是动态的,新的目标可能会在任何时候出现。 由于射击场离你足够远,可以表示为一个二维平面,其中 $y = 0$ 是地面。有一些目标是圆形的,所有的目标都站在地面上。这意味着,如果一个目标的中心是 $(x, y) (y > 0)$,那么它的半径等于 $y$,以便它接触到 $y = 0$ 的线。在任何给定时刻,射击场上没有两个目标同时存在相交(但它们可能接触)。 最初,射击场是空的。你在这次比赛中的参与可以描述为 $n$ 个事件:要么一个新目标出现在射击场上,要么你在射击场的某个点射出一箭。要击中目标,你必须严格射入圆内(击中边界不算)。如果你射中并击中某个目标,那么该目标将从射击场上移除,你将获得一分。

输入格式

输入的第一行包含整数 $n (1 \le n \le 2 \cdot 10^{5})$。接下来的 $n$ 行描述了比赛中发生的事件。第 $i$ 行包含三个整数 $t_{i}, x_{i},$ 和 $y_{i} (t_{i} = 1 , 2$;$-10^{9} \le x_{i}, y_{i} \le 10^{9}$;$y_{i} > 0)$。 如果 $t_{i} = 1$,则一个中心为 $(x_{i}, y_{i})$,半径为 $y_{i}$ 的新目标出现在射击场上。 如果 $t_{i} = 2$,则你进行一次射击,击中射击场的 $(x_{i}, y_{i})$。

输出格式

对于你的每次射击,输出一个单独的行,包含一个整数。如果射击没有击中任何目标,打印 `-1`。如果射击击中了一个目标,打印该目标被添加到射击场时的事件编号。事件编号从 $1$ 开始。

说明/提示

时间限制:3 秒,内存限制:512 MB。 题面翻译由 ChatGPT-4o 提供。