#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct brade {
  int a;
  int b;
  int num;
  brade(int _a, int _b, int _n) : a(_a), b(_b), num(_n){};
};
int main() {
  int n, h, a, b;
  int turn_cnt = 0, dmg = 0;
  cin >> n >> h;
  vector<brade> brade_a, brade_b;
  for (int(i) = (0); (i) < (n); (i)++) {
    cin >> a >> b;
    brade_a.push_back({a, b, i});
    brade_b.push_back({a, b, i});
  }
  sort(brade_a.begin(), brade_a.end(),
       [](brade &one, brade &two) { return one.a > two.a; });
  sort(brade_b.begin(), brade_b.end(),
       [](brade &one, brade &two) { return one.b > two.b; });
  for (auto elem : brade_b) {
    if (elem.num != brade_a[0].num) {
      if (elem.b >= brade_a[0].a) {
        turn_cnt++;
        dmg += elem.b;
        if (dmg >= h) {
          cout << turn_cnt << endl;
          return 0;
        }
      } else {
        break;
      }
    }
  }
  turn_cnt++;
  int tmp = h - dmg - brade_a[0].b;
  if (tmp > 0) {
    if (tmp % brade_a[0].a != 0) turn_cnt++;
    tmp /= brade_a[0].a;
  } else {
    tmp = 0;
  }
  cout << tmp + turn_cnt << endl;
  return 0;
}
