#include <bits/stdc++.h>
using namespace std;
long med3(long x, long y, long z) {
  if (x < y) {
    if (y < z)
      return y;
    else
      return z;
  } else {
    if (x < z)
      return x;
    else
      return z;
  }
}
void quick_sort(vector<pair<long, long>> &array, int left, int right) {
  if (left < right) {
    int i = left;
    int j = right;
    long pivot = (array[i].second + array[j].second) / 2;
    while (1) {
      while (array[i].second < pivot) i++;
      while (pivot < array[j].second) j--;
      if (i >= j) break;
      iter_swap(array.begin() + i, array.begin() + j);
    }
    quick_sort(array, left, i - 1);
    quick_sort(array, j + 1, right);
  }
}
int main() {
  int n;
  long h;
  cin >> n >> h;
  vector<pair<long, long>> ab;
  long a_idx = 0, b_idx = 0;
  for (int i = (0); i < (int)(n); i++) {
    pair<long, long> inp;
    cin >> inp.first >> inp.second;
    ab.push_back(inp);
    if (ab[a_idx].first < ab[i].first) {
      a_idx = i;
    } else if (ab[a_idx].first == ab[i].first) {
      if (ab[a_idx].second < ab[i].second) a_idx = i;
    }
    if (ab[b_idx].second > ab[i].second) b_idx = i;
  }
  quick_sort(ab, 0, ab.size() - 1);
  long ans = 0;
  for (int i = (int)(ab.size() - 1); i >= (int)(0); i--) {
    if (i != a_idx) {
      if (ab[i].second <= ab[a_idx].first) break;
      h -= ab[i].second;
      ans++;
      if (h <= 0) break;
    }
  }
  if (h > 0) {
    if (ab[a_idx].first < ab[a_idx].second) {
      h -= ab[a_idx].second;
      ans++;
      if (h <= 0) {
        cout << (ans) << endl;
        return 0;
      }
    }
    ans += h / ab[a_idx].first;
    if (h % ab[a_idx].first != 0) ans++;
  }
  cout << (ans) << endl;
  return 0;
}
