#include <bits/stdc++.h>
using namespace std;
struct Solution {
  void solve(std::istream& in, std::ostream& out) {
    int64_t n, h;
    in >> n >> h;
    vector<int64_t> a(n), b(n);
    int64_t amax = 0, ans = 0;
    for (int i = 0; i < n; i++) {
      in >> a[i] >> b[i];
      amax = max(amax, a[i]);
    }
    sort(b.begin(), b.end());
    reverse(b.begin(), b.end());
    for (int i = 0; i < n; i++) {
      if (b[i] > amax) {
        h -= b[i];
        ans++;
      } else {
        break;
      }
    }
    if (0 < h) {
      ans += (h + amax - 1) / amax;
    }
    out << ans << '\n';
  }
};
void solve(std::istream& in, std::ostream& out) {
  out << std::setprecision(12);
  Solution solution;
  solution.solve(in, out);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  istream& in = cin;
  ostream& out = cout;
  solve(in, out);
  return 0;
}
