#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct Sword {
	int a, b;
};

bool sortb(const Sword &s1, const Sword &s2) {
	return s1.b > s2.b;
}

int main() {
	int n, h;
	cim >> n >> h;
	vector<Sword> swords(n);
	int amax = 0;
	long bsum = 0;
	for (int i = 0; i < n; i++) {
		cin >> swords[i].a >> swords[i].b;
		amax = max(amax, swords[i].a);
		bsum += swords[i].b;
	}
	sort(swords.begin(), swords.end(), sortb);
	long ans = 0;
	for (const Sword &s : swords) {
		h -= s.b;
		ans++;
		if (h <= 0) {
			cout << ans << endl;
			return 0;
		}
	}
	cout << ans + (h + amax - 1) / amax << endl;
}