from collections import deque
n,h=map(int,input().split())
ab=[list(map(int,input().split())) for _ in range(n)]
ab.sort(key=lambda x:x[1],reverse=True)
X=max(ab,key=lambda x:x[0])[0]#振る方で最大のもの
#print(n,h,ab,X)
ab=deque(ab)
#print(ab)
ans=0
while True:
    if len(ab)==1:
        if ab[0][1]>=h:
            ans+=1
            print(ans)
            exit()
        else:
            break
    
    if ab[0][1]<=X:
        break
    t=ab.popleft()
    h-=t[1]
    ans+=1
    #print(h,ab)
    if h<=0:
        print(ans)
        exit()
    
ab=list(ab)
#print(h,ab)

if len(ab)==1:
    if (h-ab[0][1])%ab[0][0]==0:
        ans+=1+(h-ab[0][1])//ab[0][0]
        print(ans)
        exit()
    else:
        ans+=2+(h-ab[0][1])//ab[0][0]
        print(ans)
        exit()

if h%X==0:
    ans+=h//X
else:
    ans+=h//X +1
print(ans)