#define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
#include <algorithm>
#define rep(i,n) for(int i=0;i<(n);++i)
#define all(a) (a).begin(),(a).end()
using namespace std;
using Graph = vector<vector<int>>;
typedef long long ll;
const int mod= 1e+9+7;

int main(){
    ll N,H; cin>>N>>H;
    vector<ll>a(N),b(N);
    ll mx=0;
    rep(i,N){
        cin>>a[i]>>b[i];
        mx=max(mx,a[i]);
    }
    sort(b.begin(),b.end());
    reverse(b.begin(),b,end());
    ll sum=0;
    ll cnt=0;
    rep(i,N){
        if(b[i]>mx){
            sum+=b[i];
            cnt++;
        }
        if(sum>=H){
            cout<<cnt<<endl;
            return 0;
        }
    }
    ll ans =cnt+((H-sum)+mx-1)/mx;
    cout<<ans<<endl;
}


