import strformat, streams, sequtils, strutils, algorithm, math, future, sets, tables, hashes
proc `ceilDiv`*[T](x, y: T): T = x div y + ord(x mod y != 0)
proc `//=`*(x: var SomeInteger; y: SomeInteger) = x = x div y
proc `%=`*(x: var SomeInteger; y: SomeInteger) = x = x mod y
var
    L = stdin.readLine.split.map(parseInt)
    N = L[0]
    H = L[1]
    a, b:int
    A, B:seq[int]
    ans = 0
    idx, jdx:int
    tmp = 0
for i in 1..N:
    (a, b) = stdin.readLine.split.map(parseInt)
    A.add a
    B.add b
A = A.sortedByIt(-it)
B = B.sortedByIt(-it)
tmp = ceil(H / A[0]).toInt
while H > 0 and idx < N:
    if A[jdx] >= B[idx]:
        ans += ceil(H.float / A[jdx].float).toInt
        H = 0
        break
    else:
        H -= B[idx]
        ans += 1
        idx += 1
# echo ans, " ", H
if H != 0:
    ans += ceil(H.float / A[jdx].float).toInt
ans = min(tmp, ans)
echo ans