让尽量大的去存即可。
#include <iostream>
#include <algorithm>
using namespace std;
int a[1005];
int main()
{
int n,m,x;
cin >> n >> m;
for(int i = 0;i < n;++i){
cin >> x;
a[x]++;
}
int c = 0;
for(int i = 1000;i >= 1;--i){
if(m - a[i] * i > 0){
m -= a[i] * i;
c += a[i];
}
else{
c += m / i;
if(m % i != 0) c++;
break;
}
}
cout << c << endl;
return 0;
}