分煎饼
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

平面上有 n 个互不重叠的圆形煎饼(可能相切),第 i 个煎饼的圆心坐标为 (x_i, y_i),半径为 r_i。小S想知道,有没有一条直线可以将平面分为两个部分,使得两部分中煎饼的面积之和相等。可以证明,答案一定存在,如果有多种可行的方法,输出任意一种即可。

输入描述:

第一行一个整数 n1 \le n \le 1000),表示煎饼的数量。
接下来 n 行,每行包含三个整数 x_i, y_ir_i0 \le x_i, y_i \le 10^41 \le r_i \le 10),表示第 i 个煎饼的圆心坐标 (x_i, y_i) 和半径 r_i。保证这些煎饼互不重叠,但有可能相切。

输出描述:

输出共三行三个数 A, B, C,表示直线的方程 Ax + By + C = 0
注意:为了避免精度问题,您需要保证 0.5 \le A^2 + B^2 \le 1.5,且 |C| \le 10^9。如果您找到的 A, B, C 不满足 0.5 \le A^2 + B^2 \le 1.5,您可以通过如下方法进行转换:
  1. 令 D = \sqrt{A^2 + B^2}
  2. 令 A' = \frac{A}{D}B' = \frac{B}{D}C' = \frac{C}{D}
  3. 得到一个满足 A'^2 + B'^2 = 1 的直线方程 A'x + B'y + C' = 0
设所有煎饼的总面积为 S,您的直线将总面积分为了 S_1S_2 两部分(S_1 + S_2 = S),如果 |S_1 - S_2| \le S \times 10^{-6},您的答案将被接受。
提示:为了避免精度误差,建议在输出时至少保留 15 位小数。
示例1

输入

复制
4
6 0 5
14 6 5
8 14 5
0 8 5

输出

复制
-0.6
0.8
-1.4

说明

样例如下图所示 :

示例2

输入

复制
2
1 1 1
5 3 2

输出

复制
-0.5
1
-0.5

说明

样例如下图所示: