import sys

def I(): return int(sys.stdin.readline())

def LI(): return list(map(int,sys.stdin.readline().split()))

mod = 10**9 + 7

inf = float('inf')



N, H = LI()

a = [0]*N; b = [0]*N

for i in range(N):

    a[i], b[i] = LI()

maxa = max(a)

usefulb = []

for i in b:

    if i>maxa:

        usefulb.append(i)

#print(usefulb)

usefulb.sort(reverse = True)

cur = int(0)

LastH = H

for v in usefulb:

    LastH -= v

    cur +=1

    if LastH<=0:

        break

#print(LastH, maxa)

if LastH>0:

    cur += ((LastH+maxa-1)//maxa)



ans = cur

print(ans)
def examA():

    C = [SI()for _ in range(3)]

    ans = C[0][0]+C[1][1]+C[2][2]

    print(ans)

    return



def examB():

    N, M = LI()

    P = [0]*N

    S = [LSI()for _ in range(M)]

    pena = 0

    ac = set()

    for p,s in S:

        p = int(p)-1

        if s=="WA":

            P[p] += 1

        else:

            if p in ac:

                continue

            ac.add(p)

            pena += P[p]



    print((len(ac),pena))

    return



def examC():

    W, H, N = LI()

    lx, rx, ly, ry = 0, W, 0, H

    A = [LI()for _ in range(N)]

    for x,y,a in A:

        if a==1:

            lx = max(lx,x)

        elif a==2:

            rx = min(rx,x)

        elif a==3:

            ly = max(ly,y)

        elif a==4:

            ry = min(ry,y)

    ans = max(0,rx-lx)*max(0,ry-ly)

    print(ans)

    return



def examD():

    N, H = LI()

    B = [0]*N

    maxa = 0

    ans = 0

    for i in range(N):

        a, B[i] = LI()

        if a>maxa:

            maxa = a

    B.sort(reverse=True)

    for b in B:

        if b<maxa:

            break

        H -= b

        ans += 1

        if H<=0:

            print(ans)

            return

    ans += -(-H//maxa)

    print(ans)

    return



def examE():

    ans = 0

    print(ans)

    return



def examF():

    ans = 0

    print(ans)

    return



import sys,bisect,itertools,heapq,math,random

from copy import deepcopy

from heapq import heappop,heappush,heapify

from collections import Counter,defaultdict,deque

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

def I(): return int(readline())

def LI(): return list(map(int,readline().split()))

def LSI(): return list(map(str,sys.stdin.readline().split()))

def LS(): return sys.stdin.readline().split()

def SI(): return sys.stdin.readline().strip()

global mod,mod2,inf,alphabet,_ep

mod = 10**9 + 7

mod2 = 998244353

inf = 10**18

_ep = 10**(-12)

alphabet = [chr(ord('a') + i) for i in range(26)]



sys.setrecursionlimit(10**7)



if __name__ == '__main__':

    examD()



"""

142

12 9 1445 0 1

asd dfg hj o o

aidn

"""
import sys


def I():
    return int(sys.stdin.readline())


def LI():
    return list(map(int, sys.stdin.readline().split()))


mod = 10**9 + 7
inf = float("inf")
N, H = LI()
a = [0] * N
b = [0] * N
for i in range(N):
    a[i], b[i] = LI()
maxa = max(a)
usefulb = []
for i in b:
    if i > maxa:
        usefulb.append(i)
# print(usefulb)
usefulb.sort(reverse=True)
cur = int(0)
LastH = H
for v in usefulb:
    LastH -= v
    cur += 1
    if LastH <= 0:
        break
# print(LastH, maxa)
if LastH > 0:
    cur += (LastH + maxa - 1) // maxa
ans = cur
print(ans)

def examA():
    C = [SI() for _ in range(3)]
    ans = C[0][0] + C[1][1] + C[2][2]
    print(ans)
    return


def examB():
    N, M = LI()
    P = [0] * N
    S = [LSI() for _ in range(M)]
    pena = 0
    ac = set()
    for p, s in S:
        p = int(p) - 1
        if s == "WA":
            P[p] += 1
        else:
            if p in ac:
                continue
            ac.add(p)
            pena += P[p]
    print((len(ac), pena))
    return


def examC():
    W, H, N = LI()
    lx, rx, ly, ry = 0, W, 0, H
    A = [LI() for _ in range(N)]
    for x, y, a in A:
        if a == 1:
            lx = max(lx, x)
        elif a == 2:
            rx = min(rx, x)
        elif a == 3:
            ly = max(ly, y)
        elif a == 4:
            ry = min(ry, y)
    ans = max(0, rx - lx) * max(0, ry - ly)
    print(ans)
    return


def examD():
    N, H = LI()
    B = [0] * N
    maxa = 0
    ans = 0
    for i in range(N):
        a, B[i] = LI()
        if a > maxa:
            maxa = a
    B.sort(reverse=True)
    for b in B:
        if b < maxa:
            break
        H -= b
        ans += 1
        if H <= 0:
            print(ans)
            return
    ans += -(-H // maxa)
    print(ans)
    return


def examE():
    ans = 0
    print(ans)
    return


def examF():
    ans = 0
    print(ans)
    return


import sys, bisect, itertools, heapq, math, random
from copy import deepcopy
from heapq import heappop, heappush, heapify
from collections import Counter, defaultdict, deque

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines


def I():
    return int(readline())


def LI():
    return list(map(int, readline().split()))


def LSI():
    return list(map(str, sys.stdin.readline().split()))


def LS():
    return sys.stdin.readline().split()


def SI():
    return sys.stdin.readline().strip()


global mod, mod2, inf, alphabet, _ep
mod = 10**9 + 7
mod2 = 998244353
inf = 10**18
_ep = 10 ** (-12)
alphabet = [chr(ord("a") + i) for i in range(26)]
sys.setrecursionlimit(10**7)
if __name__ == "__main__":
    examD()
"""
142
12 9 1445 0 1
asd dfg hj o o
aidn
"""

-import sys +def examA(): +    C = [SI() for _ in range(3)] +    ans = C[0][0] + C[1][1] + C[2][2] +    print(ans) +    return + + +def examB(): +    N, M = LI() +    P = [0] * N +    S = [LSI() for _ in range(M)] +    pena = 0 +    ac = set() +    for p, s in S: +        p = int(p) - 1 +        if s == "WA": +            P[p] += 1 +        else: +            if p in ac: +                continue +            ac.add(p) +            pena += P[p] +    print((len(ac), pena)) +    return + + +def examC(): +    W, H, N = LI() +    lx, rx, ly, ry = 0, W, 0, H +    A = [LI() for _ in range(N)] +    for x, y, a in A: +        if a == 1: +            lx = max(lx, x) +        elif a == 2: +            rx = min(rx, x) +        elif a == 3: +            ly = max(ly, y) +        elif a == 4: +            ry = min(ry, y) +    ans = max(0, rx - lx) * max(0, ry - ly) +    print(ans) +    return + + +def examD(): +    N, H = LI() +    B = [0] * N +    maxa = 0 +    ans = 0 +    for i in range(N): +        a, B[i] = LI() +        if a > maxa: +            maxa = a +    B.sort(reverse=True) +    for b in B: +        if b < maxa: +            break +        H -= b +        ans += 1 +        if H <= 0: +            print(ans) +            return +    ans += -(-H // maxa) +    print(ans) +    return + + +def examE(): +    ans = 0 +    print(ans) +    return + + +def examF(): +    ans = 0 +    print(ans) +    return + + +import sys, bisect, itertools, heapq, math, random +from copy import deepcopy +from heapq import heappop, heappush, heapify +from collections import Counter, defaultdict, deque + +read = sys.stdin.buffer.read +readline = sys.stdin.buffer.readline +readlines = sys.stdin.buffer.readlines -    return int(sys.stdin.readline()) +    return int(readline()) -    return list(map(int, sys.stdin.readline().split())) +    return list(map(int, readline().split())) +def LSI(): +    return list(map(str, sys.stdin.readline().split())) + + +def LS(): +    return sys.stdin.readline().split() + + +def SI(): +    return sys.stdin.readline().strip() + + +global mod, mod2, inf, alphabet, _ep -inf = float("inf") -N, H = LI() -a = [0] * N -b = [0] * N -for i in range(N): -    a[i], b[i] = LI() -maxa = max(a) -usefulb = [] -for i in b: -    if i > maxa: -        usefulb.append(i) -# print(usefulb) -usefulb.sort(reverse=True) -cur = int(0) -LastH = H -for v in usefulb: -    LastH -= v -    cur += 1 -    if LastH <= 0: -        break -# print(LastH, maxa) -if LastH > 0: -    cur += (LastH + maxa - 1) // maxa -ans = cur -print(ans) +mod2 = 998244353 +inf = 10**18 +_ep = 10 ** (-12) +alphabet = [chr(ord("a") + i) for i in range(26)] +sys.setrecursionlimit(10**7) +if __name__ == "__main__": +    examD() +""" +142 +12 9 1445 0 1 +asd dfg hj o o +aidn +"""