#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);++i)
#define rrep(i,n) for(int i=1;i<(n);++i)
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define maxs(a, b) a = max(a, b)
#define mins(a, b) a = min(a, b)
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const ll linf = (1ll << 61);
const int inf = 1001001001;
const int mod = 1000000007;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	ll n, h;
	cin >> n >> h;
	ll num = 0, mx = 0;
	vector<pair<ll, ll>> p(n);
	rep(i, n) cin >> p[i].first >> p[i].second;
	sort(p.begin(), p.end(), [](auto const& x, auto const& y) {
		return x.second > y.second;
		});
	rep(i, n) {
		ll a = p[i].first;
		if (a >= mx) {
			mx = a;
			num = i;
		}
	}
	ll ans = 0;
	rep(i, n) {
		if (p[i].second < mx) break;
		if (i < num) {
			h -= p[i].second;
			ans++;
		}
		if (i > num) {
			if (h - p[num].second <= 0) {
				h = 0, ans++;
				break;
			}
			h -= p[i].second;
			ans++;
		}
	}
	if (h > 0) h -= p[num].second, ans++;
	if (h > 0) {
		ll res = h / mx;
		if (h % mx != 0) ans++;
		ans += res;
	}
	cout << ans << endl;
	return 0;
}
