#include <bits/stdc++.h>
using namespace std;
struct katana {
  int a, b;
} k[100010];
int n, h;
int ans;
bool cmp(katana x, katana y) { return x.b > y.b; }
int main() {
  freopen("Katana.in", "r", stdin);
  freopen("Katana.out", "w", stdout);
  cin >> n >> h;
  int i, j;
  int maxv = 0;
  for (i = 1; i <= n; i++) cin >> k[i].a >> k[i].b, maxv = max(maxv, k[i].a);
  sort(k + 1, k + n + 1, cmp);
  i = 1;
  while (i <= n && k[i].b > maxv) {
    h -= k[i].b;
    ans++;
    if (h <= 0) {
      cout << ans << endl;
      return 0;
    }
    i++;
  }
  ans += h / maxv;
  if (h % maxv != 0) ans++;
  cout << ans << endl;
  return 0;
}
