Clarissa 主厨正在开发一种新的甜点,它由一个装有水果和可能的奶油馅料的圆锥形糕点组成。Clarissa 计划通过将一个圆形面团圆盘包裹在一个涂了油的金属圆锥体上(见图 2),并留出轻微的重叠部分,然后在圆锥体上烘烤来制作这个圆锥。
她已经制作了几个直径为 $D$、斜高为 $S$ 的金属圆锥体(见图 1)。她想为每个圆锥体尝试不同的面团配方和烘烤方法,使用不同半径的圆形面团。重叠部分 $O$(见图 3)的准确性非常重要,因为重叠太小会削弱外壳,而重叠太大可能会导致该处的面团未烤熟。Clarissa 希望有一个应用程序,她可以输入圆锥体的直径 $D$ 和斜高 $S$、面团圆盘的半径 $r$ 以及所需的重叠量 $O$,并得到面团底部距离圆锥体底部的高度 $B$,以便面团能达到所需的重叠量(见图 4)。这个距离可以标记在圆锥体上,使包裹面团更容易。
编写一个程序作为该应用程序的核心。它将输入圆锥体的直径 $D$ 和斜高 $S$、圆形面团圆盘的半径 $r$ 以及所需的重叠量 $O$,单位均为英寸。它应该返回距离底部的高度 $B$,精确到十分之一英寸;或者,如果面团圆盘太大,在任何位置重叠都过多(见下文图 5),则返回 $-1.0$。如果圆盘半径太小或圆锥直径太大(见下文图 6),以至于即使圆盘顶部位于圆锥顶点时重叠也不够,则返回 $-2.0$。
在最后两种情况下,这将向控制应用程序发出信号以显示错误消息。
图 1、图 2 和图 3
图 4、图 5 和图 6
在图 1 中,$D$ 是圆锥底面直径,$H$ 是圆锥高度,$S$ 是圆锥斜高。图 2 显示了面团包裹在圆锥体上的视图,面团圆盘的中心在前面。图 3 显示了另一侧的视图,展示了重叠部分。图 4 显示了侧视图,面团圆盘的中心位于边缘,展示了距离底部的高度 $B$。图 5 说明了圆盘半径太大,以至于即使圆盘底部位于圆锥底部,面团重叠也过多的情况。图 6 说明了圆锥直径太大,以至于即使面团位于圆锥顶部,重叠也不足的情况。
输入格式
输入由单行组成,包含四个以空格分隔的十进制双精度浮点数值 $D, S, r$ 和 $O$,满足:$(1.0 \le D \le S \le 16)$,$(2.0 \le r \le S/2)$ 以及 $(0.1 \le O \le 1.0)$。
输出格式
输出由单行组成,包含一个十进制浮点数值,四舍五入到小数点后一位,给出从圆锥底部到面团底部以实现所需重叠的距离 $B$。或者,如果因为半径太大而无法实现,则输出 $-1.0$。如果圆盘半径太小,以至于即使圆盘顶部位于圆锥顶点时重叠也不够,则输出 $-2.0$。
样例
样例输入 1
8 12 5 0.5
样例输出 1
1.5
样例输入 2
5 12 5 0.5
样例输出 2
-1.0
样例输入 3
11 12 5 0.5
样例输出 3
-2.0