#include <bits/stdc++.h>
using namespace std;
int n, h;
int w[100010], t[100010];
int main() {
  cin >> n >> h;
  for (int i = 0; i < n; i++) {
    cin >> w[i] >> t[i];
  }
  int max_wield = 0;
  for (int i = 0; i < n; i++) {
    max_wield = max(max_wield, w[i]);
  }
  sort(t, t + n);
  reverse(t, t + n);
  int sum_throw = 0;
  int count_throw = n;
  int count_throw_by_finish = 0;
  for (int i = 0; i < n; i++) {
    sum_throw += t[i];
    if (sum_throw >= h) {
      count_throw_by_finish = i + 1;
    }
  }
  for (int i = 0; i < n; i++) {
    if (t[i] < max_wield) {
      count_throw--;
      sum_throw -= t[i];
    }
  }
  h -= sum_throw;
  int ans = 0;
  if (h % max_wield != 0) {
    ans = 1;
  }
  ans = ans + h / max_wield + count_throw;
  cout << min(ans, count_throw_by_finish) << endl;
  return 0;
}
