#include <bits/stdc++.h>
using namespace std;
namespace Dump {
static std::vector<string> dumpKey;
static string dumpKeyBuf;
void print() { cerr << endl; }
template <class Head, class... Tail>
void print(Head &&head, Tail &&...tail) {
  if (dumpKey.empty()) {
    dumpKeyBuf = head;
    dumpKeyBuf.erase(std::remove_if(dumpKeyBuf.begin(), dumpKeyBuf.end(),
                                    [](char c) { return c == ' '; }),
                     dumpKeyBuf.end());
    std::istringstream stream(dumpKeyBuf);
    string field;
    while (std::getline(stream, field, ',')) dumpKey.push_back(field);
    reverse(dumpKey.begin(), dumpKey.end());
  } else {
    cerr << dumpKey.back() << ":" << head << "  ";
    dumpKey.pop_back();
  }
  Dump::print(std::move(tail)...);
}
}  // namespace Dump
typedef pair<int, int> pii;
template <class T>
T to_T(const string &s) {
  istringstream is(s);
  T res;
  is >> res;
  return res;
}
template <class T>
string to_s(const T &a) {
  ostringstream os;
  os << a;
  return os.str();
}
void solve(long long N, long long H, vector<long long> a, vector<long long> b) {
  sort((a).begin(), (a).end());
  long long ma = a.back();
  sort((b).begin(), (b).end());
  reverse((b).begin(), (b).end());
  long long ans = 0;
  for (int i = (0); i < (b.size()); ++i) {
    if (b[i] >= ma || H <= 0) {
      H -= b[i];
      ans++;
    } else {
      break;
    }
  }
  ans += (H + ma - 1) / ma;
  cout << ans << endl;
}
int main() {
  ios::sync_with_stdio(false);
  long long H;
  long long N;
  cin >> N;
  vector<long long> b(N - 1 + 1);
  vector<long long> a(N - 1 + 1);
  cin >> H;
  for (int i = 0; i <= N - 1; i++) {
    cin >> a[i];
    cin >> b[i];
  }
  solve(N, H, a, b);
  return 0;
}
