use std::collections::BinaryHeap;
use std::cmp;

fn getline() -> String{
	let mut __ret=String::new();
	std::io::stdin().read_line(&mut __ret).ok();
	return __ret;
}


fn main(){
    let s=getline();
    let v:Vec<_>=s.trim().split(' ').collect();
    let n:i32=v[0].parse().unwrap();
    let h:i32=v[1].parse().unwrap();
    let mut amax = -1;
    let mut heap = BinaryHeap::new();
    for i in 0..n{
        let s=getline();
        let v:Vec<_>=s.trim().split(' ').collect();
        let a:i32=v[0].parse().unwrap();
        let b:i32=v[1].parse().unwrap();
        amax = cmp::max(amax, a);
        heap.push(b);
    }
    let mut ans = 0;
    let mut d = 0;
    while d < h && !heap.is_empty()  && amax < *(heap.peek().unwrap()) {
        d += heap.pop().unwrap();
        ans += 1;
    }
    ans += (h-d + amax - 1)  / amax;
    println!("{}",ans);
}