import Data.List
import Data.Maybe
import Control.Monad
import Control.Applicative
import qualified Data.ByteString.Char8 as B

main :: IO ()
main = do
    [n',h'] <- words <$> getLine :: IO [String]
    let n = read n' :: Int
        h = read h' :: Integer

    (as,bs) <- unzip <$> replicateM n ((\[a,b]->(a,b)) . 
               map (fst . fromJust . B.readInteger) . B.words <$> B.getLine) :: IO ([Integer],[Integer])
    let a = maximum as
    let ls = ((0,0):) . zip [0..] . scanl (+) 0 . sortBy (flip compare) $ filter (> a) bs
    let Just (i, b) = find ((>=h) . snd) ls <|> Just (last ls)
    print (i + ceiling (fromIntegral (max 0 (h - b)) / fromIntegral a :: Double) :: Integer)