#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  long long H;
  cin >> N >> H;
  vector<pair<long long, long long> > damage;
  long long max_a = 0;
  for (int i = 0; i < N; i++) {
    long long a, b;
    cin >> a >> b;
    damage.push_back(make_pair(b, a));
    max_a = max(a, max_a);
  }
  int i = 0;
  int l = damage.size();
  while (i < l) {
    if (damage[i].first <= max_a) {
      damage.erase(damage.begin() + i);
      l--;
    } else {
      i++;
    }
  }
  sort(damage.begin(), damage.end());
  l = damage.size();
  long long sum = 0;
  long long ans = 0;
  i = l - 1;
  while (i >= 0 && sum < H) {
    sum += damage[i].first;
    ans++;
    i--;
  }
  if (sum >= H) {
    cout << ans << endl;
    return 0;
  }
  ans += (H - sum + max_a - 1) / max_a;
  cout << ans << endl;
  return 0;
}
