#include <bits/stdc++.h>
using namespace std;
template <class C>
inline bool in_(const typename C::key_type& k, const C& A) {
  return A.find(k) != A.end();
}
inline bool in_(const string& s, const string& S) {
  return S.find(s) != string::npos;
}
const int maxn = 1e5 + 5;
int A[maxn], N, H;
int main() {
  while (cin >> N >> H) {
    int maxa = 0;
    for (int i = (0); i < (N); ++i) {
      int a, b;
      cin >> a >> b;
      A[i] = b;
      maxa = max(maxa, a);
    }
    sort(A, A + N);
    reverse(A, A + N);
    int i = 0;
    for (; i < N; i++)
      if (A[i] < maxa) break;
    int ans = 0;
    for (int j = (0); j < (i); ++j)
      if (H > 0) {
        H -= A[j];
        ans++;
      }
    if (H > 0) ans += ceil(1.0 * H / maxa);
    cout << ans << endl;
  }
  return 0;
}
