使用结构体 struct...
“比较”的原则是:需求积木数少的优先给予;若需求一致,则拥有积木数多的优先给予
#include <iostream>
using namespace std;
struct children{
int have;
int want;
};
int main() {
int n,s;
while(cin >> n && n){
cin >> s;
int i,j;
children k;
children kid[n];
for(i = 0 ; i < n ; i++){
cin>>kid[i].have>>kid[i].want;
}
for(i = 0; i < n ; i++){
for(j = 0 ; j < n-1-i ; j++){
if(kid[j].want > kid[j+1].want) {
k = kid[j];
kid[j] = kid[j+1];
kid[j+1] = k;//两个小朋友所需要的积木数不相同
}
else if(kid[j].want == kid[j+1].want && kid[j].have < kid[j+1].have) {
k = kid[j];
kid[j] = kid[j+1];
kid[j+1] = k;//在两个小朋友需要的积木数相同的时候,优先的是拥有较多积木数目的
}
}
}
for(i = 0 ;i < n ; i++){
if(s < kid[i].want) {
break;
}
else {
s = s + kid[i].have;
}
}
if(i == n) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}
}