#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct child{
int hand;
int need;
bool operator<(const child & one)const
{
if(need < one.need)
return true;
else
return false;
}
};
struct child c[10000];
int ava[10000];
int main(){
int children,hand;
bool flag;
while(cin >> children >> hand && children != 0)
{
flag=true;
for(int i=0;i<children;i++)
cin >> c[i].hand >> c[i].need;
sort(c,c+children);
ava[0]=hand;
for(int i=1;i<children;i++)
ava[i]=ava[i-1]+c[i-1].hand;
for(int i=0;i<children;i++)
if(c[i].need > ava[i])
{
cout << "NO" << endl;
flag=false;
}
if(flag==true)
cout << "YES" << endl;
}
return 0;
}
可读性差,大家见谅!