#arc0114. [arc011_4]きつねさんからの挑戦状

[arc011_4]きつねさんからの挑戦状

问题描述

狐狸格雷打算在城市中心建立一个秘密武器工厂。
为了不让人类知道工厂的位置,他计划在人类居住较少的偏远地区建立工厂。
你是某国派往阻止格雷行动的特工,为了完成任务,某国提供了城市地图给你。
城市由道路和住宅组成,它们都标示在地图上。
地图是二维平面,道路表示为直线,住宅表示为坐标。

现在你收到了其他特工提供的有关格雷建立工厂位置的情报:

  1. 格雷所考虑的难以发现程度取决于距离最近的道路和距离最近的住宅之间的距离。
  2. 定义以下变量:
    • 工厂坐标为 (x,y)(x, y)
    • 距离工厂最近的道路距离为 distroad(x,y)dist_{road}(x, y)
    • 距离工厂最近的住宅距离为 distpoint(x,y)dist_{point}(x, y)
  3. 难以发现程度评估函数 f(x,y)f(x, y) 可以表示为 f(x,y)=distroad(x,y)+distpoint(x,y)2f(x, y) = dist_{road}(x, y) + dist_{point}(x, y)^2
  4. 格雷将在使评估函数 f(x,y)f(x, y) 的值最大的坐标 (x,y)(x, y) 处建立工厂。
  5. 工厂坐标 (x,y)(x, y) 满足 Rx,yR-R≦x,y≦R,其中 RR 是一个整数。
  6. 坐标 (x,y)(x, y) 是实数。

根据这些信息和地图,你需要确定格雷计划建设工厂的位置,并求解评估函数 f(x,y)f(x, y) 的最大值。


输入

输入以以下格式从标准输入中给出:NN MM RR a0a_{0} b0b_{0} c0c_{0} :: aN1a_{N-1} bN1b_{N-1} cN1c_{N-1} p0p_0 q0q_0 :: pM1p_{M-1} qM1q_{M-1}

  1. 第一行包含三个整数 NN MM RR,以空格分隔。
  • NN 是道路的数量,满足 1N161≦N≦16
  • MM 是住宅的数量,满足 1M161≦M≦16
  • RR 是格雷建设工厂坐标 (x,y)(x, y) 的约束条件,满足 1R1,0001≦R≦1,000
  1. 第二行到第 N+1N+1 行分别给出了 NN 条道路的三个整数 aia_i bib_i cic_i,以空格分隔。
  • ii 条道路表示为直线 aix+biy+ci=0a_ix + b_iy + c_i = 0
  • aia_i 满足 1,000ai1,000-1,000≦a_i≦1,000
  • bib_i 满足 1,000bi1,000-1,000≦b_i≦1,000
  • cic_i 满足 1,000ci1,000-1,000≦c_i≦1,000
  • 不会出现 ai=0a_i = 0bi=0b_i = 0 的情况。
  1. N+1N+1 行到第 N+M+1N+M+1 行分别给出了 MM 个住宅的两个整数 pjp_j qjq_j,以空格分隔。
  • jj 个住宅的坐标为 (pj,qj)(p_j, q_j)
  • pjp_j 满足 1,000pj1,000-1,000≦p_j≦1,000
  • qjq_j 满足 1,000qj1,000-1,000≦q_j≦1,000
  1. 可能会有多条相同的直线和坐标。

输出

输出评估函数 f(x,y)f(x, y)Rx,yR-R≦x,y≦R 范围内的最大值,以一行输出。
如果输出的绝对误差或相对误差至少有一个小于 10610^{-6},则认为是正确答案。
输出最后要换行。


输入示例 1


4 4 1
1 1 2
1 1 -2
1 -1 2
1 -1 -2
1 1
1 -1
-1 1
-1 -1

输出示例 1


3.414213562373

image

图:示例 1 的示意图

  • 在坐标 (0,0)(0, 0) 处建立工厂时,评估函数的值最大,为 3.4142135623733.414213562373

输入示例 2


7 5 3
-2 2 1
5 5 3
5 4 1
-2 2 -1
0 3 -4
-3 -1 -1
2 0 2
-2 4
-3 -3
4 3
4 -5
2 5

输出示例 2


23.575923118987
  • 在坐标 (1.35714285714286,1)(1.35714285714286, -1) 处建立工厂时,评估函数的值最大,为 23.57592311898723.575923118987