#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using edge = struct {
  int to;
  ll cost;
};
void solve() {
  ll n, h;
  cin >> n >> h;
  ll A = 1ll;
  priority_queue<ll> B;
  for (int i = 0; i < n; i++) {
    ll a, b;
    cin >> a >> b;
    A = max(A, a);
    B.push(b);
  }
  ll damage = 0ll;
  ll ans = 0ll;
  for (int i = 0; i < n; i++) {
    if (B.top() > A) {
      damage += B.top();
      ans++;
    }
    B.pop();
    if (damage >= h) {
      cout << ans << "\n";
      return;
    }
  }
  ans += (ll)((double)(h - damage) / A + 0.5);
  cout << ans << "\n";
}
int main() {
  solve();
  return 0;
}
