#P10778. [SGU414]Orthogonal Circles

[SGU414]Orthogonal Circles

题目描述

若两个圆相交,并且在任意一个交点处,两圆的切线互相垂直,则称这两个圆正交

现在给定平面上的 nn 个圆,请你找出一个与所有给定圆都正交的圆。

注意:输入中的圆允许完全重合

输入格式

第一行一个整数 nn,表示给定圆的个数。

1n1051\le n\le 10^5

接下来 nn 行,每行三个整数 xi,yi,rix_i,y_i,r_i,表示第 ii 个圆的圆心坐标为 (xi,yi)(x_i,y_i),半径为 rir_i

106xi,yi106,-10^6\le x_i,y_i\le 10^6, 1ri1061\le r_i\le 10^6

输出格式

  • 如果恰好存在一个与所有给定圆都正交的圆,输出该圆的圆心坐标和半径:
x y r

其中 x,y,rx,y,r 为实数。

若你的答案与标准答案的绝对误差或相对误差不超过 10610^{-6},则视为正确。

  • 如果不存在这样的圆,输出:
-1
  • 如果满足条件的圆不止一个,输出:
-2

样例输入

3
0 0 5
7 16 10
10 0 5

样例输出

5.0 5.0 5.0

样例说明

原题在样例后附有如下示意图:

上图对应样例中的三个已知圆,以及唯一满足条件的正交圆。

说明

本题的判定结果有三种:

  1. 唯一解:输出该圆的圆心与半径;
  2. 无解:输出 -1
  3. 多解:输出 -2

实现时需要特别注意重合圆、退化约束、数值精度以及多解判定。