#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<int> a1;
  vector<int> b1;
  long long int maxa = 0;
  long long int maxb = 0;
  long long int maxhitb = 0;
  long long int count = 0;
  for (int i = 0; i < N; i++) {
    int a, b;
    cin >> a >> b;
    if (a > maxa) {
      maxa = a;
      maxb = b;
    } else if (a == maxa) {
      if (b < maxb) {
        maxb = b;
      }
    }
    a1.push_back(a);
    b1.push_back(b);
  }
  sort(b1.begin(), b1.end());
  sort(a1.begin(), a1.end());
  for (int i = 0; i < N; i++) {
    if (b1[i] >= maxa) {
      maxhitb = maxhitb + b1[i];
      count++;
    }
  }
  if (maxhitb >= H) {
    for (int i = 0; i < N; i++) {
      H = H - b1[i];
      if (H <= 0) {
        cout << i + 1;
      }
    }
  } else {
    H = H - maxhitb;
    cout << count + (H + (maxa - 1)) / maxa;
  }
}
