#include <bits/stdc++.h>
using namespace std;
inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T>
inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
const double EPS = 1e-10;
const double PI = acos(-1.0);
const long long INF = 1000000007;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int main(void) {
  int N, H;
  cin >> N >> H;
  vector<long long> a(N), b(N);
  for (int i = (0); i < (N); ++i) cin >> a[i] >> b[i];
  sort((a).begin(), (a).end());
  reverse((a).begin(), (a).end());
  sort((b).begin(), (b).end());
  reverse((b).begin(), (b).end());
  vector<long long> c(N, 0);
  c[0] = b[0];
  for (int i = (0); i < (N - 1); ++i) c[i + 1] = c[i] + b[i + 1];
  long long ans = 0;
  while (ans < N && c[ans] < H && a[0] <= b[ans]) ans++;
  if (c[ans] >= H)
    ans++;
  else {
    ans += (H - c[ans]) / a[0];
    if ((H - c[ans]) % a[0]) ans++;
  }
  cout << ans << endl;
  return 0;
}
