#include<iostream>
#include<string>
#include<algorithm>
#include<set> 
#define LL long long 
using namespace std;
#dafine inf 0x3f3f3f3f
struct node
{
	int a,b,t;
}a[100005];
int dp[100005];
bool cmp(node a,node b)
{
	if(a.b==b.b) return a.a>b.a;
	return a.b>b.b;
}
int main()
{
	int n,h;
	cin>>n>>h;
	int maxa=-1;
	int maxb=-1;
	int in=1;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].a>>a[i].b;
		a[i].t=i;
		if(a[i].a>maxa)
		{
			in=i;
			maxa=a[i].a;
			maxb=a[i].b;
		}	
	}
	int ans=0;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++) dp[i]=dp[i-1]+a[i].b;
	int ans1=inf,ans2=inf;
	
	for(int i=1;i<=n;i++)
	{	
		if(dp[i]>=h) ans2=min(ans2,i);
		if(a[i].a==maxa){
			int t=0,th=h;
			t+=i;
			th-=dp[i];
			if(th<=0){
				ans1=min(ans1,t);
				break;
			}
			if(th%a[i].a!=0) t++;
			t+=th/a[i].a; 
			ans1=min(ans1,t);
			//cout<<t<<endl;
		}
	}
	cout<<min(ans1,ans2)<<endl;
} 