#include <bits/stdc++.h>
using namespace std;
struct Sword {
  int a;
  int b;
};
bool compare(const Sword& a, const Sword& b) {
  if (a.b > b.b)
    return true;
  else if (a.b == b.b && a.a < b.a)
    return true;
  else
    return false;
}
vector<Sword> swords;
int main(int argc, char* argv[]) {
  int n, h;
  scanf("%d %d", &n, &h);
  vector<int> a, b;
  for (int i = 0; i < n; ++i) {
    int aa, bb;
    scanf("%d %d", &aa, &bb);
    Sword s = {aa, bb};
    swords.push_back(s);
  }
  sort(swords.begin(), swords.end(), compare);
  for (int i = 0; i < n; ++i) {
    cout << swords[i].a << ", " << swords[i].b << endl;
  }
  int imaxa = 0;
  int maxa = 0;
  for (int i = 0; i < n; ++i) {
    if (swords[i].a >= maxa) {
      imaxa = i;
      maxa = swords[i].a;
    }
  }
  int cnt = 0;
  for (int i = 0; i < n; ++i) {
    if (swords[i].b > maxa) {
      h -= swords[i].b;
      ++cnt;
      if (h <= 0) {
        printf("%d\n", cnt);
        return 0;
      }
    } else {
      break;
    }
  }
  if (h % swords[imaxa].a == 0)
    cnt += h / swords[imaxa].a;
  else
    cnt += (h / swords[imaxa].a) + 1;
  printf("%d\n", cnt);
}
