eggDrop :: Integer -> Integer -> Integer eggDrop n k | k == 1 || k == 0 || n == 1 = k | otherwise = 1 + (minimum $ map (\i -> f i) [1..k]) where f i = max (eggDrop (n-1) (i-1)) (eggDrop n (k-i)) ----------------- -- gross io bs -- ----------------- main :: IO () main = do l <- getLine let (n:k:_) = map read $ words l :: [Integer] putStrLn $ show $ eggDrop n k