#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 7;
struct Infor {
  long long a, b;
  bool poss_throw;
};
bool cmp(Infor a, Infor b) {
  if (a.b >= b.b) {
    return true;
  } else {
    return false;
  }
}
int main() {
  long long n, h;
  cin >> n >> h;
  Infor *infor = new Infor[n];
  long long a, b;
  long long max_wield = 0;
  for (long long i = 0; i < n; i++) {
    cin >> a >> b;
    infor[i].a = a;
    infor[i].b = b;
    infor[i].poss_throw = false;
    if (a > max_wield) {
      max_wield = a;
    }
  }
  long long cnt = 0;
  long long sum = 0;
  sort(infor, infor + n, cmp);
  for (long long i = 0; i < n; i++) {
    sum += infor[i].b;
    cnt++;
    if (sum >= h) {
      cout << cnt << endl;
      return 0;
    }
  }
  sum = 0;
  cnt = 0;
  for (long long i = 0; i < n; i++) {
    if (infor[i].b > max_wield) {
      infor[i].poss_throw = true;
    }
    if (infor[i].poss_throw) {
      sum += infor[i].b;
      cnt++;
    }
  }
  cnt += ceil((h - sum) / (double)max_wield);
  cout << cnt << endl;
  return 0;
}
