#include <bits/stdc++.h>
using namespace std;
long long int maxtime(long long int x, long long int y) {
  return (x + y - 1) / y;
}
long long int lcm(long long int number1, long long int number2) {
  long long int m = number1;
  long long int n = number2;
  if (number2 > number1) {
    m = number2;
    n = number1;
  }
  long long int s = -1;
  while (s != 0) {
    s = m % n;
    m = n;
    n = s;
  }
  return m;
}
long long int gcd(long long int number1, long long int number2) {
  long long int m = number1;
  long long int n = number2;
  return m / lcm(m, n) * n;
}
int main() {
  long long int N, H;
  cin >> N >> H;
  vector<long long int> a1;
  vector<long long int> b1;
  long long int ma = 0;
  long long int mb = 0;
  for (int i = 0; i < N; i++) {
    long long int a;
    long long int b;
    cin >> a >> b;
    a1.push_back(a);
    b1.push_back(b);
    if (a > ma) {
      ma = a;
      mb = b;
    }
    if (a == ma) {
      if (b < mb) {
        mb = b;
      }
    }
  }
  long long int lob = 0;
  long long int count = 0;
  for (int i = 0; i < N; i++) {
    if (b1[i] >= ma) {
      count++;
      lob = lob + b1[i];
    }
  }
  sort(b1.begin(), b1.end(), greater<int>());
  long long int hit = H;
  hit = hit - lob;
  int p = 0;
  int top = 0;
  p = count + (hit + (ma - 1)) / ma;
  cout << min(p, top);
}
