import Data.List.Split (splitOn) winsFromTimeDist :: (Int, Int) -> Int winsFromTimeDist (time, dist) = length $ filter (> dist) $ zipWith (*) [0..time] (reverse [0..time]) main :: IO () main = do lines <- lines <$> getContents -- let values = map (map (\y -> read y :: Int) . splitOn [' '] . drop 9) lines let values = map (map read . filter (/= "") . splitOn [' '] . drop 9) lines :: [[Int]] let time_dist = zip (values!!0) (values!!1) let wins = map winsFromTimeDist time_dist let result = product wins print result