#include <iostream>//cout
#include <stdio.h>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <queue>
#include <stack>
#include <functional>
#include <list>
#include <utility>//swap
using namespace std;
static const int MAX = 200000;
#define rep(i,n) for(int i=0;i<n;i++)
#define GET_ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
 
int main() {
  long long int n, h;
  cin >> n >> h;
  int x,y;
  vector<long long int> a, b;
  for (int i = 0; i < n; i++) {
    cin >> x >> y;
    a.push_back(x);
    b.push_back(y);
  }
  sort(b.rbegin(), b.rend());
  sort(a.rbegin(), a.rend());
  int a_max = a[0];
  int num = 0;
  for (int i = 0; i < n; i++) {
    if (a_max < b[i]){
      num = i+1;
    }
  }
  int t = 0;
  for (int i = 0; i < num; i++) {
    t += b[i];
    if (h <= t) {
      cout << i+1 << endl;
      return 0;
    }
  }
  if ((h-t)%(a_max)==0){
    cout <<  (h-t)/a_max + num << endl;
  } else {
    cout <<  (h-t)/a_max + 1 + num << endl;
  }
  return 0;