#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chmax(T &a, T b) {
  a = max(a, b);
}
template <typename T>
void chmin(T &a, T b) {
  a = min(a, b);
}
template <typename T>
void chadd(T &a, T b) {
  a = a + b;
}
long long int dx[] = {0, 0, 1, -1};
long long int dy[] = {1, -1, 0, 0};
const long long INF = 1001001001001001LL;
const long long MOD = 1000000007LL;
struct Elem {
  long long int a, b;
  bool operator<(const Elem &e) const { return b > e.b; }
};
long long int N, H;
long long int A[100010], B[100010];
long long int solve() {
  long long int rest = H, cnt = 0;
  long long int dam = A[0];
  for (long long int(i) = (0); (i) < (N); (i)++) {
    if (dam > B[i]) break;
    rest -= B[i];
    cnt++;
  }
  cnt += (rest + dam - 1) / dam;
  return cnt;
}
signed main() {
  cin >> N >> H;
  for (long long int(i) = (0); (i) < (N); (i)++) {
    cin >> A[i] >> B[i];
  }
  sort(A, A + N, greater<long long int>());
  sort(B, B + N, greater<long long int>());
  cout << solve() << endl;
  return 0;
}
