#icpc2013autumnh. [icpc2013autumn_h]Venn Diagram

[icpc2013autumn_h]Venn Diagram

问题陈述

Alice是一位私人教师。她的工作之一是为她的学生准备学习材料。现在,作为材料的一部分,她正在绘制集合AABB之间的维恩图。

维恩图是一种用来说明一个或多个集合之间关系的图表。例如,绘制集合AABB之间的维恩图如下所示。矩形表示全集UU。矩形中的两个圆分别表示两个集合AABB。两个圆的交集对应于两个集合的交集,即 ABA \cap B

维恩图

图:集合之间的维恩图

Alice是一个数学达人,她想出了一个让她的维恩图更美观的特殊条件。她的条件是维恩图中的每个部分的面积等于其对应集合中的元素数量。换句话说,一个圆的面积必须等于 A|A|,另一个圆的面积必须等于 B|B|,它们的交集的面积必须等于 AB|A \cap B|。这里,X|X| 表示集合 XX 中的元素数量。

Alice已经绘制了一个矩形,但她在确定绘制剩余两个圆的位置时遇到了麻烦,因为她无法容忍人类会犯的小错误。作为Alice的老朋友,你的任务是帮助她编写一个程序,确定两个圆的圆心和半径,使它们满足上述条件。


输入

输入是一个数据集序列。数据集的数量不超过 300。

每个数据集的格式如下:

U_WU\_W U_HU\_H A|A| B|B| AB|A \cap B|

前两个整数 U_WU\_WU_HU\_H (1U_W,U_H1001 \le U\_W, U\_H \le 100) 表示与全集 UU 对应的矩形的宽度和高度。接下来的三个整数 A|A|B|B|AB|A \cap B| (1A,B10,0001 \le |A|, |B| \le 10{,}0000ABmin{A,B}0 \le |A \cap B| \le \min\{|A|,|B|\}) 分别表示集合 AABBABA \cap B 的元素数量。输入以五个零结束。

可以假设即使 U_WU\_WU_HU\_H±0.01\pm 0.01 内变化,也不会改变你能否在Alice的条件下绘制两个圆。

输出

对于每个数据集,输出满足Alice条件的两个圆的圆心和半径,格式如下:

X_AX\_A Y_AY\_A R_AR\_A X_BX\_B Y_BY\_B R_BR\_B

X_AX\_AY_AY\_A 是与集合 AA 对应的圆的圆心坐标。R_AR\_A 是与集合 AA 对应的圆的半径。X_BX\_BY_BY\_BR_BR\_B 是与集合 BB 对应的圆的数值。这些值之间用空格分隔。

如果无法满足条件,则输出:

impossible

每个部分的面积的绝对误差不能大于 0.00010.0001。另外,两个圆的半径必须在矩形内,错误范围为 0.00010.0001,更准确地说,必须满足以下四个条件之一:

  • X_AR_A0.0001X\_A - R\_A \ge -0.0001

  • X_A+R_AU_W+0.0001X\_A + R\_A \le U\_W + 0.0001

  • Y_AR_A0.0001Y\_A - R\_A \ge -0.0001

  • Y_A+R_AU_H+0.0001Y\_A + R\_A \le U\_H + 0.0001

对于 X_BX\_BY_BY\_BR_BR\_B,也必须满足相同的条件。


样例输入

10 5 1 1 0
10 5 2 2 1
10 10 70 70 20
0 0 0 0 0```

### 样例输出

```plain
1 1 0.564189584 3 1 0.564189584
1 1 0.797884561 1.644647246 1 0.797884561
impossible```

* * *

### 来源名称

[JAG Practice Contest for ACM-ICPC Asia Regional 2013](http://acm-icpc.aitea.net/index.php?2013%2FPractice%2F%CC%CF%B5%BC%C3%CF%B6%E8%CD%BD%C1%AA)

* * *