#include <bits/stdc++.h>
int cmp1(const void *a, const void *b) { return (*(int *)a - *(int *)b); }
int n, h, i, w_max, t_damage, c_index, count;
int a[100001], b[100001], c[100001];
int main() {
  scanf("%d %d", &n, &h);
  for (i = 1; i <= n; i++) {
    scanf("%d %d", &a[i], &b[i]);
    if (w_max < a[i]) {
      w_max = a[i];
    }
  }
  for (i = 1; i <= n; i++) {
    c[++c_index] = b[i];
  }
  qsort(&c[1], c_index, sizeof(int), &cmp1);
  for (i = c_index; i > 0; i--) {
    count++;
    h -= c[i];
    if (h < 1) {
      printf("%d\n", count);
      return 0;
    }
  }
  count += h / w_max;
  if (h % w_max > 1) {
    count++;
  }
  printf("%d\n", count);
  return 0;
}
