n,h=map(int,input().split())
l=[list(map(int,input().split())) for i in range(n)]
a=[l[i][0] for i in range(n)]
maxA=max(a)
b=[l[i][1] for i in range(n)]
b.sort()
b.reverse()
damage=0
count=0
f=0
for i in range(n):
  if damage>=h:
    f=1
    break
  else:
    if b[i]>max(a):
      damage+=b[i]
      count+=1
    else:
      break
if f==1:
  print(count)
else:
  count+=((h-damage-1)//maxA)+1
  print(count)