import Data.Ratio import Text.Printf import Data.Fixed apply n f x = foldr ($) x (replicate n f) main = do [xa,ya] <- map read . words <$> getLine :: IO [Double] [xb,yb] <- map read . words <$> getLine :: IO [Double] print (saitama xa ya xb yb) saitama xa ya xb yb | ya > yb = snd $ apply 100 (triSearch (euc xa ya xb yb)) (ya,yb) | otherwise = snd $ apply 100 (triSearch (euc xb yb xa ya)) (yb,ya) triSearch f (lo,hi) | f md1 < f md2 = (lo,md2) | otherwise = (md1,hi) where md1 = lo + (hi-lo)/3 md2 = lo + (2*(hi-lo))/3 euc xa ya xb yb yp = dist (0,yp) (xa,ya) + dist (0,yp) (xb,yb) where dist (p1,q1) (p2,q2) = sqrt $ (p1-p2)^2 + (q1-q2)^2