#include <bits/stdc++.h>
using namespace std;
struct knife {
  long long k;
  long long ff;
};
knife f[100001];
int cmp(knife a, knife b) {
  if (a.ff == b.ff) {
    return a.k > b.k;
  }
  return a.ff > b.ff;
}
int main() {
  long long n, h, ans = 0, tmp = 0;
  scanf("%lld %lld", &n, &h);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld %lld", &f[i].k, &f[i].ff);
    tmp = max(tmp, f[i].k);
  }
  sort(f + 1, f + 1 + n, cmp);
  for (long long i = 1; i <= n; i++) {
    if (f[i].ff > f[i].k) ans += f[i].ff;
    if (ans >= h) {
      printf("%lld\n", i);
      return 0;
    }
  }
  long long a = (h - ans) / tmp;
  long long b = (h - ans) % tmp;
  printf("%lld\n", a + n);
  return 0;
}
