#include <bits/stdc++.h>
using namespace std;
typedef long long lli;
typedef long double ld;
typedef pair<lli, lli> plli;
typedef vector<lli> vlli;
typedef vector<plli> vplli;
template <class T>
bool is_prime(T n) {
  if ((n % 2 == 0 and n > 2) or n < 2) return false;
  for (T i = 3; i * i <= n; i += 2) {
    if (n % i == 0) return false;
  }
  return true;
}
lli power(lli a, lli b) {
  lli value;
  if (!b)
    return 1;
  else if (b % 2 == 0) {
    value = power(a, b / 2) % (lli)1000000007;
    return (value * value) % (lli)1000000007;
  } else {
    value = power(a, b / 2) % (lli)1000000007;
    return ((a * value) % (lli)1000000007 * (value)) % (lli)1000000007;
  }
}
bool compare(plli p1, plli p2) { return p1.second > p2.second; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  lli i, n, h, maxi = -(lli)2000000000000, idx = -1, ans = 0;
  cin >> n >> h;
  lli mark[n];
  for (i = 0; i < n; i++) mark[i] = 0;
  bool chk = false;
  vplli v(n);
  sort(v.begin(), v.end(), compare);
  for (i = 0; i < n; i++) {
    cin >> v[i].first >> v[i].second;
    if (maxi < v[i].first) {
      maxi = v[i].first;
      idx = i;
    }
  }
  for (i = 0; i < n; i++) {
    if (v[i].second > maxi) {
      h -= v[i].second;
      mark[i] = 1;
      ans++;
    }
    if (h <= 0) {
      chk = true;
      break;
    }
  }
  if (chk) {
    cout << ans << '\n';
    return 0;
  }
  ans += h / maxi;
  cout << ans + (h % maxi ? 1 : 0);
  return 0;
}
