#P14691. [Bulgarian2020]Incinerator

[Bulgarian2020]Incinerator

题目描述

艾莉所在国家的政府认为空气“太干净了”,于是打算新建一座焚化炉来焚烧垃圾。
国家可以视作一个边长为 1000 千米的正方形区域。

在这个国家中已经有 N 座火电厂。第 i 座火电厂的位置为点 (X_i, Y_i),位于正方形内部或边界上。
每座火电厂产生的烟雾云可以看成一个(X_i, Y_i) 为圆心、R_i 为半径的圆

已知任意两座火电厂的烟雾云互不重叠

现在政府希望修建一座新的焚化炉,使其烟雾云同样满足:不与任何现有火电厂的烟雾云重叠
焚化炉的圆心必须位于国家领土内(包括边界),但所有烟雾云都允许伸出国家边界之外。

请你编写程序 incinerator,求新建焚化炉烟雾云可能达到的最大半径

输入格式

第一行输入一个整数 N,表示现有火电厂数量。

接下来 N 行,每行输入三个实数 X_i, Y_i, R_i,分别表示第 i 座火电厂的坐标和烟雾云半径。
每个实数的小数点后不超过 9 位。

输出格式

输出一个实数,表示在最优选址下,焚化炉烟雾云的最大可能半径。

若你的答案与标准答案的误差小于 10^-9,则视为正确。

数据范围

  • 2 <= N <= 100
  • 0 <= X_i, Y_i <= 1000
  • 1 <= R_i <= 1414

额外说明:

  • 30% 的测试中,N = 2
  • 60% 的测试中,N <= 20

样例

原题样例配有示意图。
此处应插入原题示意图(正方形区域、若干已有圆以及新圆位置示意图)。

输入

7
42.1337 13.666 191.17
543.21 765.432 55.555
987.987 666.666 321.321
0 1000 100
666.666 66.66 16.6
133.331 666.666666666 123.321
888.8 88.8 8.8

输出

320.337196456704

样例解释

一种最优方案下,焚化炉圆心坐标为:

(434.939950686, 341.298204535)

样例图中,新焚化炉的烟雾云仅画出了圆周轮廓;已有火电厂的烟雾云则画成了实心圆或实心圆的一部分。