#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) {
  if (a < b) swap(a, b);
  if (b == 0)
    return a;
  else
    return GCD(b, a % b);
}
bool sosuu_check(int num) {
  int i;
  for (i = 2; i <= sqrt(num); ++i) {
    if (num % i == 0) return false;
  }
  return (num < 2) ? false : true;
}
int main() {
  int N, H, i, MA, ans = 0;
  cin >> N >> H;
  vector<int> a(100000), b(100000);
  for (i = 0; i < (N); ++i) cin >> a[i] >> b[i];
  MA = *max_element(a.begin(), a.begin() + N);
  sort(b.begin(), b.begin() + N);
  for (i = (N - 1); i > (-1); --i)
    if (b[i] >= MA) {
      ++ans;
      H -= b[i];
    } else
      break;
  ans += (H + MA - 1) / MA;
  cout << ans << endl;
}
