先排序,后判断
#include<iostream>
#include<algorithm>
using namespace std;
struct my
{
int has;
int need;
};
bool cmp(my a ,my b )
{
return a.need<b.need;
}
int main()
{
int n,s,i,c[11000];
my a[11000];
while (cin>>n>>s,n)
{
for(i=0;i<n;i++)
cin>>a[i].has>>a[i].need;
sort (a,a+n,cmp);
for(i=0;i<n;i++)
{
if (s+c[i]<a[i].need)
{
cout<<"NO"<<endl;
break;
}
else
{
c[i+1]=c[i]+a[i].has;
if(i==n-1)
cout<<"YES"<<endl;
}
}
}
return 0;
}