inline fun <T> T.also(block: (T) -> Unit): T { block(this); return this }

fun Int.divCeil(a: Int) = (this + a - 1) / a

fun main(args: Array<String>) {
    val (N, H) = readLine()!!.split(" ").map{ it.toInt() }
    val damages = (1..N).map { readLine()!!.split(" ").map{ it.toInt() }.let{ Pair(it[0], it[1])} }

    val maxNormal = damages
            .map { it.first }.max()!!
    val sortedSpecial = damages
            .map { it.second }
            .filter { it > maxNormal }
            .sortedDescending()
    val specialSum = sortedSpecial.sum()


    print(if (specialSum < H) {
        sortedSpecial.size + (H - specialSum).divCeil(maxNormal)
    } else {
        var partSum = 0
        sortedSpecial.takeWhile { b ->
            (partSum < H).also {
                partSum += b
            }
        }.size
    })
}