#include <bits/stdc++.h>
bool f(std::pair<long long, long long> a, std::pair<long long, long long> b) {
  return a.first >= b.first;
}
int main() {
  long long n, h;
  std::cin >> n >> h;
  std::vector<std::pair<long long, long long> > v(n);
  for (size_t i = 0; i < n; i++) {
    long long a, b;
    std::cin >> a >> b;
    v[i] = {b, a};
  }
  long long min = 10000000000000LL;
  long long max_attack = 0;
  long long count = 0;
  for (size_t i = 0; i < n; i++) {
    max_attack = std::max(max_attack, v[i].second);
  }
  if (n != 1) std::sort(v.begin(), v.end(), f);
  for (size_t i = 0; i < n; i++) {
    if (max_attack <= v[i].first) {
      h -= v[i].first;
      count++;
      if (h <= 0) {
        std::cout << count << std::endl;
        return 0;
      }
    }
  }
  for (size_t i = 0; i < n; i++) {
    min = std::min(min, (long long)std::ceil(h / (double)v[i].second) + count);
  }
  std::cout << min << std::endl;
  return 0;
}
