#include <bits/stdc++.h>
using namespace std;
struct cww {
  cww() {
    if (1) {
      ios::sync_with_stdio(false);
      cin.tie(0);
    }
  }
} star;
template <typename T>
inline bool chmin(T &l, T r) {
  bool a = l > r;
  if (a) l = r;
  return a;
}
template <typename T>
inline bool chmax(T &l, T r) {
  bool a = l < r;
  if (a) l = r;
  return a;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (auto &it : v) is >> it;
  return is;
}
class range {
 private:
  struct I {
    int x;
    int operator*() { return x; }
    bool operator!=(I &lhs) { return x < lhs.x; }
    void operator++() { ++x; }
  };
  I i, n;

 public:
  range(int n) : i({0}), n({n}) {}
  range(int i, int n) : i({i}), n({n}) {}
  I &begin() { return i; }
  I &end() { return n; }
};
int main() {
  int N;
  long long H;
  cin >> N >> H;
  long long a = 0;
  vector<long long> b(N);
  for (auto i : range(N)) {
    long long aa;
    cin >> aa >> b[i];
    chmax(a, aa);
  }
  sort((b).begin(), (b).end());
  long long ret = (H + a - 1) / a;
  long long sum = 0;
  for (auto i : range(N)) {
    sum += b[i];
    chmin(ret, i + 1 + max(0ll, (H + a - 1 - sum) / a));
  }
  cout << ret << endl;
  return 0;
}
