|
发表于 2024-4-27 18:53:35
|
显示全部楼层
#include <bits/stdc++.h>
using namespace std;
int ca,ans=0;
struct It {
int c, w, r;
};
bool cmp(It a, It b) {
return a.r > b.r; // 比较单位体积物品价值
}
int main() {
int n;
long long m;
cin>>n>>m;
vector<It> item(n);
for(int i=0;i<n;i++)
{cin>>item[i].c>>item[i].w;
item[i].r=item[i].c-item[i].w; //压缩空间最大化
//cout<<item[i].r<<" ";
m-=item[i].c;
}
//cout<<m<<endl;
sort(item.begin() , item.end(), cmp); // 先进行排序
for(int i=0;i<n;i++){
//cout<<item[i].r<<" ";
if(m>=0)
break;
m = m+item[i].r;
ans++;
}
//cout<<endl;
if(m<0){
cout<<-1;
} else{
cout<<ans;
}
return 0;
} |
|