niyaznigmatullin

Untitled

May 7th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Control.Monad
  2.  
  3. solve :: [Integer] -> Integer
  4. solve [d, l, h] = search 0 (d * d + l * l + 2)
  5.                     where search left right = if (left < right - 1) then
  6.                                               (if (4 * d * h * mid * (mid + 1) <= d * d + l * l) then (search mid right) else (search left mid)) else right
  7.                                                   where mid = quot (left + right) 2
  8.  
  9.  
  10. main = (getLine >>= (flip (replicateM . read) getLine)) >>= (mapM (return . solve . (map read) . words)) >>= (mapM_ print)
Advertisement
Add Comment
Please, Sign In to add comment