#include <bits/stdc++.h>
using namespace std;
int N, H;
vector<pair<int, int>> katana;
int main(void) {
  cin >> N >> H;
  katana.resize(N);
  for (int i = (0); i < (int)(N); ++i) {
    cin >> katana[i].first >> katana[i].second;
  }
  sort((katana).begin(), (katana).end(),
       [](const pair<int, int>& lh, const pair<int, int>& rh) {
         if (lh.second == rh.second)
           return lh.first < rh.first;
         else
           return lh.second > rh.second;
       });
  auto itr =
      max_element((katana).begin(), (katana).end(),
                  [](const pair<int, int>& lh, const pair<int, int>& rh) {
                    if (lh.first == rh.first)
                      return lh.second > rh.second;
                    else
                      return lh.first < rh.first;
                  });
  int d = distance(katana.begin(), itr);
  int h = H;
  int count = 0;
  for (auto k = katana.begin(); k != katana.end(); ++k) {
    if (k == itr) {
      break;
    }
    h -= k->second;
    count++;
    if (h <= 0) break;
  }
  auto itr2 = itr;
  while (itr2 != katana.end() && itr->second == itr2->second) {
    h -= itr2->second;
    count++;
    if (h <= 0) break;
    itr2++;
  }
  if (h <= 0) {
  } else {
    h -= itr->second;
    count++;
    if (h > 0) {
      int slash = h / itr->first;
      if (h % itr->first != 0) count++;
      count += slash;
    }
  }
  cout << count << endl;
  return 0;
}
