#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
typedef long long Int;
typedef struct Value {
    Int v;
    bool b;
} Value;

int desc(const void *v1, const void *v2) {
    return ((Value *)v2)->v - ((Value *)v1)->v;
}
int main() {
    Int n, h;
    scanf("%lld %lld", &n, &h);
    Value *values = (Value *)malloc(2 * n * sizeof(Value));
    for (int i = 0; i < n; i++) {
        Int a, b;
        scanf("%lld %lld", &a, &b);
        Value v1 = {.v = a, .b = false};
        Value v2 = {.v = b, .b = true};
        values[2 * i] = v1;
        values[2 * i + 1] = v2;
    }
    qsort(values, 2 * n, sizeof(Value), desc);
    Int ans = 0;
    Int i = 0;
    while (h > 0) {
        Value value = values[i];
        if (value.b) {
            h -= value.v;
            ans++;
            i++;
        } else {
            Int q = h / value.v;
            Int r = h % value.v;
            if (r > 0) q++;
            ans += q;
            break;
        }
    }
    printf("%lld\n", ans);
}
