#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O0")
const long long int mod = 1e9 + 7;
const long long int INF = 1e18;
using Graph = vector<vector<long long int>>;
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  cout << setprecision(15) << fixed;
  chrono::system_clock::time_point start, end;
  start = chrono::system_clock::now();
  long long int n, h;
  cin >> n >> h;
  vector<long long int> a(n);
  vector<long long int> b(n);
  long long int ans = 0;
  for (long long int i = 0; i < (n); ++i) {
    cin >> a[i] >> b[i];
  }
  sort((a).begin(), (a).end());
  sort((b).begin(), (b).end());
  long long int A = a[n - 1];
  for (long long int i = n - 1; i >= 0; --i) {
    if (A < b[i]) {
      h -= b[i];
      ++ans;
    } else {
      break;
    }
    if (h < 0) {
      cout << ans << '\n';
      return 0;
    }
  }
  ans += (h + A - 1) / A;
  cout << ans << '\n';
  end = chrono::system_clock::now();
  auto elapsed =
      chrono::duration_cast<chrono::milliseconds>(end - start).count();
  cerr << elapsed << "ms" << '\n';
}
