def solve(n, h, v):
    v = sorted(v, key=lambda x: -x[1])
    max_a = 0
    opt_i = 0
    for i in range(n):
        a, b = v[i]
        if max_a < a:
            opt_i = i
            max_a = a
    ans = 0
    damage = 0
    for i in range(n):
        a, b = v[i]
        if (i != opt_i) and (max_a < b):
            damage += b
            ans += 1
            if damage >= h:
                return ans
    m = max(0, (h - v[opt_i][1] - damage + max_a - 1) / max_a)
    return ans + m + 1

n, h = map(int, raw_input().split())
v = [map(int, raw_input().split()) for i in range(n)]
print solve(n, h, v)