#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline T gcd(T a, T b) {
  T c;
  while (b != 0) {
    c = a % b;
    a = b;
    b = c;
  }
  return a;
}
template <class T>
inline T lcm(T a, T b) {
  return a * b / gcd(a, b);
}
const int INF = 1e9;
const double eps = 0.0000000001;
int main() {
  long long n, h;
  cin >> n >> h;
  long long a[1000000], b[1000000], sum = 0, maxa = 0, maxb = 0;
  for (int i = 0; (i) < (n); (i)++) {
    cin >> a[i] >> b[i];
    chmax(maxa, a[i]);
    chmax(maxb, b[i]);
  }
  long long m = 0;
  for (int i = 0; (i) < (n); (i)++) {
    if (maxa < b[i]) {
      sum += b[i];
      m++;
    }
  }
  sort(b, b + n);
  reverse(b, b + n);
  long long ans, v = 0;
  if (sum > h) {
    for (int i = 0; (i) < (n); (i)++) {
      v += b[i];
      if (v >= h) {
        cout << i + 1 << endl;
      }
    }
  } else {
    h -= sum;
    m += h / maxa;
    if (h % maxa != 0) m++;
    cout << m << endl;
  }
}
