#include <bits/stdc++.h>
typedef struct {
  int a, b;
} katana;
int compare(const void *x, const void *y) {
  return -((katana *)x)->b + ((katana *)y)->b;
}
int main(void) {
  int N, H, i, ans = 0, m = 0;
  scanf("%d%d", &N, &H);
  katana S[N];
  for (i = 0; i < N; i++) {
    scanf("%d%d", &S[i].a, &S[i].b);
    if (S[i].a > m) m = S[i].a;
  }
  qsort(S, N, sizeof(katana), compare);
  i = 0;
  while (S[i].b > m && i < N) {
    H -= S[i++].b;
    ans++;
  }
  if (H > 0) ans += (H + m - 1) / m;
  printf("%d", ans);
  return 0;
}
