#include<bits/stdc++.h>
using namespace std;
long long s,n,m,sum,ans;
struct node{
	int a,b;
}arr[100005];
bool cmp(node x,node y)
{
	return x.a-x.b>y.a-y.b;
}
bool check(int x)
{
    int cnt=0,pre=0;
    for(int i=1;i<=n;i++)
	{
		if(i<=x)	cnt+=arr[i].b;
		else	cnt+=arr[i].a;
		if(cnt>m)	return 0;
    }
    return 1;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)	cin>>arr[i].a>>arr[i].b;
    for(int i=1;i<=n;i++)	sum+=arr[i].b;
    if(sum>m)
    {
    	cout<<-1;
    	return 0;
	}
    sort(arr+1,arr+n+1,cmp);
    int l=0,r=n;
    while(l<=r)
	{
        int mid=l+(r-l)/2;
        if(check(mid)==1)
		{
			ans=mid;
            r=mid-1;
		}
        else	l=mid+1;
    }
    cout<<ans;
    return 0;
}

1 条评论

  • 1