#include <bits/stdc++.h>
using namespace std;
template <class S>
S sum(vector<S> &a) {
  return accumulate(a.begin(), a.end(), S());
}
template <class S>
S max(vector<S> &a) {
  return *max_element(a.begin(), a.end());
}
template <class S>
S min(vector<S> &a) {
  return *min_element(a.begin(), a.end());
}
long long max(int a, long long b) { return max((long long)a, b); }
long long max(long long a, int b) { return max(a, (long long)b); }
long long min(int a, long long b) { return min((long long)a, b); }
long long min(long long a, int b) { return min(a, (long long)b); }
template <class S>
void print(vector<S> &v) {
  for (long long i = 0; i < (long long)v.size(); i++) {
    cerr << v[i] << ' ';
  }
  cerr << endl;
}
template <class S>
void print(vector<vector<S>> &v) {
  for (long long i = 0; i < (long long)v.size(); i++) {
    for (long long j = 0; j < (long long)v[i].size(); j++) {
      cerr << v[i][j] << ' ';
    }
    cerr << endl;
  }
}
int main() {
  int n;
  cin >> n;
  long long h;
  cin >> h;
  vector<long long> A(n), B(n);
  for (long long i = 0; i < (long long)(n); i++) {
    cin >> A[i];
    cin >> B[i];
  }
  long long a = max(A);
  long long ans = 0;
  for (long long b : B) {
    if (b > a) {
      ans++;
      h -= b;
    }
  }
  cout << ans + (long long)ceil(h / (double)a) << endl;
}
