#include <bits/stdc++.h>
const int INF = 100100100;
const int MOD = 1000000007;
using namespace std;
using vec = vector<int>;
using ll = long long;
template <class T = int>
T in() {
  T x;
  cin >> x;
  return (x);
}
const int dy[4] = {-1, 0, 0, 1};
const int dx[4] = {0, -1, 1, 0};
ll n, H;
int main(int argc, char *argv[]) {
  cin >> n >> H;
  vector<ll> A(n), B(n);
  for (int i = 0; i < (int)n; i++) {
    cin >> A[i] >> B[i];
  }
  sort((A).begin(), (A).end(), greater<int>());
  sort((B).begin(), (B).end(), greater<int>());
  ll res = 0;
  if (A[0] >= B[0]) {
    ll t = H % A[0];
    ll s = H / A[0];
    res = (t == 0) ? s : s + 1;
  } else {
    ll i = 0;
    while (A[0] < B[i] && i < n) {
      H -= B[i];
      i++;
      res++;
    }
    if (H > 0) {
      ll t = H % A[0];
      ll s = H / A[0];
      res += (t == 0) ? s : s + 1;
    }
  }
  cout << res << endl;
  return 0;
}
