#include <bits/stdc++.h>
using namespace std;
typedef struct {
  int huri;
  int nage;
} Data;
bool ask(Data& l, Data& r) {
  return l.huri == r.huri ? l.nage > r.nage : l.huri > r.huri;
}
int main() {
  int n, h;
  cin >> n >> h;
  Data data[100010];
  int hurimax = 0;
  for (int i = 0; i < n; i++) {
    cin >> data[i].huri >> data[i].nage;
    hurimax = max(hurimax, data[i].huri);
  }
  Data ndata[100010];
  int m = 0;
  bool furion = false;
  for (int i = 0; i < n; i++) {
    if (data[i].nage > hurimax) {
      ndata[m] = data[i];
      m++;
    } else if (data[i].huri == hurimax && !furion) {
      ndata[m] = data[i];
      m++;
      furion = true;
    }
  }
  sort(ndata, ndata + m, ask);
  int ans = 0;
  for (int i = 0; i < m - 1; i++) {
    h -= ndata[i].nage;
    ans++;
    if (h <= 0) {
      cout << ans << endl;
      return 0;
    }
  }
  if (!furion) {
    ans++;
    h -= ndata[m - 1].nage;
    if (h > 0) {
      ans += (h + ndata[m - 1].huri - 1) / ndata[m - 1].huri;
    }
  } else {
    ans += (h + ndata[m - 1].huri - 1) / ndata[m - 1].huri;
  }
  cout << ans << endl;
  return 0;
}
