void main() {
    import std.stdio, std.string, std.conv;
    import std.algorithm;

    auto rd = readln.split.to!(int[]);
    int N = rd[0], H = rd[1];

    auto b = new int[](N);
    int amax;

    foreach (i ; 0 .. N) {
        rd = readln.split.to!(int[]);
        int ai = rd[0], bi = rd[1];
        b[i] = bi;
        amax = max(amax, ai);
    }

    b.sort!"a > b"();

    auto bs = new long[](N + 1);
    foreach (i ; 1 .. N + 1) {
        bs[i] = bs[i-1] + b[i-1];
    }

    int ans = H;

    foreach (i ; 0 .. N + 1) {
        int tmp = i;
        long rm = H - bs[i];
        if (rm > 0) {
            tmp += (rm + amax - 1) / amax;
        }
        ans = min(ans, tmp);
    }

    writeln(ans);
}