#include <iostream>
#include <iomanip>
#include <string>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int N, H, a, b;
    cin >> N >> H;
    int aMax = 0;
    vector<int> B(N);
    for(int i = 0; i < N; i++) {
        cin >> a >> b;
        if(a > aMax) {
            aMax = a;
        }
        B[i] = b;
    }
    sort(B.begin(), B.end(), greater<int>());
    for(int i = 0; i < B.size(); i++) {
        if(B[i] < aMax) {
            cout << (i + int(ceil((double)H / aMax))) << endl;
            return 0;
        }
        H -= B[i];
        if(H <= 0) {
            cout << (i+1) << endl;
            return 0;
        }
    }
    cout << (N + int(ceil((double)H / aMax))) << endl;
    return 0;
}
