题目描述
在平面上,有 n 个圆,记为 c1,c2,…,cn 。我们尝试对这些圆运行这个算法:
- 找到这些圆中半径最大的。如果有多个半径最大的圆,选择编号最小的。记为 ci 。
- 删除 ci 及与其有交集的所有圆。两个圆有交集的含义是,平面上存在某一点,同时处于这两个圆的圆周上或圆内。
- 重复上面两个步骤直到所有的圆都被删除。

当 ci 被删除时,若循环中第一步选择的圆是 cj ,我们说 ci 被 cj 删除。对于每个圆,求出它是被哪一个圆删除的。
输入格式
第一行包含一个整数 n ,表示开始时平面上圆的数量 (1≤n≤3⋅105)。
接下来 n 行,每行包含三个整数 xi,yi,ri 依次描述圆 ci 圆心的 x 坐标、y 坐标和它的半径 (−109≤xi,yi≤109, 1≤ri≤109)。
输出格式
输出一行,包含 n 个整数 a1,a2,...an ,其中 ai 表示圆 ci 是被圆 cai 删除的。
11
9 9 2
13 2 1
11 8 2
3 3 2
3 12 1
12 14 1
9 8 5
2 8 2
5 2 1
14 4 2
14 14 1
7 2 7 4 5 6 7 7 4 7 6
题目描述中的图片对应了样例中的情形。
数据范围与提示
子任务 1(7 分):n≤5000
子任务 2(12 分):n≤3⋅105, 对于所有的圆 yi=0
子任务 3(15 分):n≤3⋅105, 每个圆最多和一个其他圆有交集。
子任务 4(23 分):n≤3⋅105, 所有的圆半径相同。
子任务 5(30 分):n≤105
子任务 6(13 分):n≤3⋅105