#include <bits/stdc++.h>
using namespace std;
struct sward {
  long long a, b;
} q[1000005];
bool cmp1(sward a, sward b) { return a.a > b.a; }
bool cmp2(sward a, sward b) { return a.b < a.b; }
int main() {
  long long n, h;
  long long attack = 0;
  cin >> n >> h;
  for (int i = 0; i < n; i++) {
    cin >> q[i].a >> q[i].b;
  }
  sort(q, q + n, cmp1);
  long long max_1 = q[0].a;
  sort(q, q + n, cmp2);
  long long tmp = 0;
  for (int i = 0; i < n; i++) {
    if (q[i].b > max_1) {
      attack += q[i].b;
      tmp++;
    }
    if (attack >= h) {
      cout << tmp;
      return 0;
    }
  }
  long long sum = h - attack;
  long long cnt = tmp;
  cnt += ceil(sum / max_1);
  cout << cnt << endl;
  return 0;
}
