#include <bits/stdc++.h>
using namespace std;
struct sward {
  int a, b;
} q[10005];
bool cmp1(sward a, sward b) { return a.a > b.a; }
bool cmp2(sward a, sward b) { return a.b < a.b; }
int main() {
  int n, h;
  int attack = 0;
  scanf("%d%d", &n, &h);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &q[i].a, &q[i].b);
  }
  sort(q, q + n, cmp1);
  int max_1 = q[0].a;
  sort(q, q + n, cmp2);
  int tmp = 0;
  for (int i = 0; i < n; i++) {
    if (q[i].b > max_1) {
      attack += q[i].b;
      tmp++;
    }
    if (attack >= h) {
      printf("%d\n", tmp);
      return 0;
    }
  }
  int sum = h - attack;
  int cnt = tmp;
  cnt += sum / max_1;
  if (sum % max_1 != 0) cnt++;
  printf("%d\n", cnt);
  return 0;
}
