#include <bits/stdc++.h>
using namespace std;
struct katana {
  int a;
  int b;
  bool use = false;
  bool operator>(katana k) const { return b > k.b; }
  bool operator<(katana k) const { return b < k.b; }
};
int main(void) {
  int N, H;
  cin >> N >> H;
  vector<katana> k(N);
  int maxa = -1;
  for (int i = 0; i < N; i++) {
    int a, b;
    cin >> a >> b;
    k[i].a = a;
    k[i].b = b;
    if (maxa < a) maxa = a;
  }
  long long int ans = 0;
  sort(k.begin(), k.end());
  for (int i = 0; i < N; i++) {
    if (k[i].b > maxa) {
      H -= k[i].b;
      ans++;
    }
  }
  while (H > 0) {
    ans++;
    H -= maxa;
  }
  cout << ans << endl;
  return 0;
}
