#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W,
    X, Y, Z;
struct katana {
  long long s;
  long long t;
  int i;
};
bool compt(const katana &left, const katana &right) {
  if (left.t == right.t) {
    return left.s > right.s;
  }
  return left.t > right.t;
}
void KatanaThrower() {
  cin >> N >> H;
  katana k[100010];
  long long maxs = 0;
  for (size_t i = 0; i < N; i++) {
    cin >> k[i].s >> k[i].t;
    k[i].i = i;
    maxs = max(k[i].s, maxs);
  }
  sort(k, k + N, compt);
  long long res = (long long)10e9 + 10;
  long long sumD = 0;
  for (int i = 0; i <= N; i++) {
    if (H < sumD) break;
    long long sc = (H - (sumD)) / maxs;
    long long rem = (H - (sumD)) % maxs;
    if (rem > 0) {
      sc++;
    }
    res = min(res, sc + i);
    if (i == N) break;
    sumD += k[i].t;
  }
  cout << res << endl;
}
int main() {
  KatanaThrower();
  return 0;
}
