from bisect import bisect_left as bsl

def main():
    with open(0) as f:
        N, H = map(int, f.readline().split())
        ab = list(map(int, f.read().split()))
    max_slash = max(ab[0::2])
    throw = [x for x in ab[1::2] if x > max_slash]
    throw.sort(reverse=True)
    throw = [sum(throw[0:i]) for i in range(1,len(throw)+1)]
    index = bsl(throw, H)
    l = len(throw)
    if index < l:
        print(index + 1)
    else:
        H += -throw[l-1]
        print(l + (H+max_slash-1)//max_slash)

main()

    