# https://atcoder.jp/contests/abc085/tasks/abc085_d
from bisect import bisect_right
from math import ceil
n, h = map(int, input().split())

cut = []
throw = []
for _ in range(n):
    a, b = map(int, input().split())
    cut.append(a)
    throw.append(b)
throw.sort()
MAX = max(cut)
index = bisect_right(throw, MAX)
throw = throw[index:]

attack = 0
for i in range(len(throw)):
    h -= throw[i]
    attack += 1
    if h <= 0:
        break

attack += max(0, ceil(h / MAX))
print(attack)
