using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ABC085D {
    class Program {
        static void Main(string[] args) {
            int[] NHInput = Console.ReadLine().Split(' ').Select(s => int.Parse(s)).ToArray();//2つ以上のスペース区切り入力の取得
            int N = NHInput[0];
            int H = NHInput[1];
            int shakeMax = 0;
            int[] thrs = new int[N];
            int answer = 0;
            for (int i = 0; i < N; i++) {
                int[] input = Console.ReadLine().Split(' ').Select(s => int.Parse(s)).ToArray();
                int sha = input[0];
                int thr = input[1];
                thrs[i] = thr;
                if (sha > shakeMax) {
                    shakeMax = sha;
                }
            }
            for (int i = 0; i < N; i++) {
                if (thrs[i] < shakeMax) {
                    thrs[i] = shakeMax;
                }
            }
            long throwSum = thrs.Sum();
            if (throwSum >= H) {
                Array.Sort(thrs);
                Array.Reverse(thrs);
                int num = 0;
                while (H > 0) {
                    H -= thrs[num];
                    num++;
                    answer++;
                }
            } else {
                H -= (int)throwSum;
                answer += N;
                answer += (H + shakeMax - 1) / shakeMax;
            }
            // Console.Write("改行なし a = {0} b = {1} c = {2}", a, b, c)//改行なし出力
            // Console.WriteLine("改行あり a = {0} b = {1} c = {2}", a, b, c);//改行付き出力
            Console.WriteLine(answer);
        }
    }
}