#include <bits/stdc++.h>
int compare_function(const void *a, const void *b) {
  int *x = (int *)a;
  int *y = (int *)b;
  return *y - *x;
}
int main() {
  long long int n, h;
  scanf("%lld %lld", &n, &h);
  long long int i;
  long long int weild[n], throwing[n];
  for (i = 0; i < n; i++) {
    scanf("%lld %lld", &weild[i], &throwing[i]);
  }
  long long int maxweild = 0, maxthrow = 0, maxindex = -1;
  for (i = 0; i < n; i++) {
    if (weild[i] > maxweild) maxweild = weild[i];
  }
  int flag = 0;
  qsort(throwing, n, sizeof(long long int), compare_function);
  if (throwing[0] >= maxweild) {
    maxthrow = throwing[0];
    flag = 1;
  }
  long long int attack = 0;
  while (h > 0) {
    attack++;
    h -= maxthrow;
    for (i = 1; throwing[i] >= maxweild && h > 0; i++) {
      attack++;
      h -= throwing[i];
    }
    if (h <= 0) flag = 0;
    if (flag) {
      long long int temp = h / maxweild;
      attack += temp;
      if (h % maxweild > 0) {
        attack++;
      }
      h = 0;
    }
  }
  printf("%lld", attack);
  return 0;
}
