#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 1;
template <class T>
void print(T x) {
  cout << x << '\n';
}
void solve(long long N, long long H, std::vector<long long> a,
           std::vector<long long> b) {
  long long amax = *max_element(a.begin(), a.end());
  sort(b.begin(), b.end());
  b.erase(
      remove_if(b.begin(), b.end(), [amax](long long x) { return amax > x; }),
      b.end());
  long long s = 0;
  for (int i = 0; i < (int)(b.size()); i++) {
    s += b[b.size() - i - 1];
    if (s > H) {
      print(i + 1);
      return;
    }
  }
  long long ans = (long long)ceil((long double)(H - s) /
                                  (*max_element(a.begin(), a.end())));
  print(b.size() + ans);
}
int main() {
  long long N;
  scanf("%lld", &N);
  long long H;
  scanf("%lld", &H);
  std::vector<long long> a(N);
  std::vector<long long> b(N);
  for (int i = 0; i < N; i++) {
    scanf("%lld", &a[i]);
    scanf("%lld", &b[i]);
  }
  solve(N, H, std::move(a), std::move(b));
  return 0;
}
