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

using namespace std;

int main(){
    int N,H;
    cin >> N >> H;
    int a[N];
    int b[N];
    for(int i = 0; i < N; i++){
        cin >> a[i] >> b[i];
    }
    //printf("%d", a[0]);
    /*if(N>1){

    }*/
    sort(a, a+N, greater<int>());

    int a_max = 0;
    a_max = a[0];

    //printf("a_max : %d\n", a_max);

    //int thrower = 0;
    int count = 0;
    int nokori;
    nokori = H;
    for (int i = 0; i < N; i++){
        if(a_max < b[i]){
            nokori = nokori - b[i];
            //thrower += b[i];
            count++;
            if(nokori <= 0){
                cout << count << endl;
                return 0;
            }
        }
    }
    //printf("throw : %d\n", count);


    //printf("nokori : %d\n", nokori);
    /*
    int slice = nokori/a_max;
    if(nokori%a_max != 0){
        slice += 1;
    }
    */
    while(nokori>0){
        nokori = nokori - a_max;
        count ++
    }
    //printf("slice : %d\n", slice);

    //count += slice;

    cout << count << endl;

    return 0;
}
