#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = std::tuple<int, int>;
const int dx[8] = {-1, 1, 0, 0, -1, -1, 1, 1},
          dy[8] = {0, 0, -1, 1, -1, 1, -1, 1};
int N, H;
vector<P> v;
int main() {
  std::cin.tie(nullptr);
  std::ios::sync_with_stdio(false);
  std::cin >> N >> H;
  v.resize(N);
  for (int i = 0; i < N; ++i) {
    std::cin >> std::get<0>(v[i]) >> std::get<1>(v[i]);
  }
  sort(v.begin(), v.end());
  ll damage = 0, cnt = 0;
  for (int i = 0; i < N; ++i) {
    if (damage < H && std::get<1>(v[i]) > std::get<0>(v[N - 1])) {
      damage += std::get<1>(v[i]);
      ++cnt;
    }
  }
  if (damage < H) {
    cnt +=
        (1ll * H - damage + std::get<0>(v[N - 1]) - 1) / std::get<0>(v[N - 1]);
  }
  std::cout << cnt << std::endl;
}
