407726: GYM102888 A 三角形切半

Memory Limit:512 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

A. 三角形切半time limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard output

在一个二维平面上,有一个顶点分别在 (x0,  y0), (x0 + a,  y0), (x0,  y0 + b) 三点上的三角形 A

请给出一条平行于 y 轴的直线 L: x = c,使得三角形 A 被直线 L 分成面积相等的两半。

正式地讲,请给出一个实数 c,使得三角形 A 中,坐标小于或等于 c 的点所组成图形的面积 SLeft,与坐标大于 c 的点所组成图形的面积 SRight 相等。

Input

一行,四个整数 x0, y0, a, b ( - 1, 000 ≤ x0, y0 ≤ 1, 000, 1 ≤ a, b ≤ 1, 000)。

表示三角形 A 三个顶点 (x0,  y0), (x0 + a,  y0), (x0,  y0 + b) 所对应的参数。

Output

一个实数 c,需满足 x0 ≤ c ≤ x0 + a,表示一条直线 L: x = c,可将三角形 A 分成面积相等的两半。

但你不需要给出该实数的精确表示,只需要输出一个浮点数,使得它与标准答案的绝对误差或对标准答案的相对误差,不超过 10 - 4,即认为你给出的答案正确。

正式地讲,记你给出的浮点数答案是 c,标准答案为 d,当 ,则认为你给出的答案正确。

ExamplesInput
0 0 1 1
Output
0.2928
Input
347 -685 868 194
Output
601.2313139300767
Input
-110 -319 376 122
Output
0.12785027385811532
Note

第一个样例如下图:

第一个样例的三角形,以及直线 x = 0.2928

第一个样例中,经计算,三角形在直线 x = 0.2928 左侧的面积为 SLeft = (0.7072 + 1)·0.2928·0.5 = 0.24993408,直线右侧面积为 SRight = (1 - 0.2928)·0.7072·0.5 = 0.25006592

尽管样例的输出 0.2928 并不怎么精确,但是由于 0.2928 与标准答案的绝对误差没有超过 10 - 4,所以给出这样的答案也会被认为是正确的。

加入题单

算法标签: