#include <bits/stdc++.h>
using namespace std;
struct node {
  int a, b, t;
} a[100005];
int dp[100005];
bool cmp(node a, node b) {
  if (a.b == b.b) return a.a > b.a;
  return a.b > b.b;
}
int main() {
  int n, h;
  cin >> n >> h;
  int maxa = -1;
  int maxb = -1;
  int in = 1;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].a >> a[i].b;
    a[i].t = i;
    if (a[i].a > maxa) {
      in = i;
      maxa = a[i].a;
      maxb = a[i].b;
    }
  }
  int ans = 0;
  sort(a + 1, a + 1 + n, cmp);
  for (int i = 1; i <= n; i++) dp[i] = dp[i - 1] + a[i].b;
  int ans1 = 0x3f3f3f3f, ans2 = 0x3f3f3f3f;
  for (int i = 1; i <= n; i++) {
    if (dp[i] >= h) ans2 = min(ans2, i);
    if (a[i].a == maxa) {
      int t = 0, th = h;
      t += i;
      th -= dp[i];
      if (th <= 0) {
        ans1 = min(ans1, t);
      } else {
        if (th % a[i].a != 0) t++;
        t += th / a[i].a;
        ans1 = min(ans1, t);
      }
    }
  }
  cout << min(ans1, ans2) << endl;
}
