hình như bài này dùng thuật toán quy hoạch động của lớp 8
để tớ xem thử
#include <iostream>
using namespace std;
int n,a[1001],m;
int quick2(int l, int maxx)
{
int left=l;
int right=maxx-1;
int pavot=a[maxx];
while(true)
{
while(a[left]>=pavot&&left<right)
{
left++;
}
while(a[right]<=pavot&&right>left)
right--;
if(left>=right)
break;
swap(a[left],a[right]);
left++;
right--;
}
swap(a[left],a[maxx]);
return left;
}
int quicksort(int l,int maxx)
{
if(l<maxx)
{
int p=quick2(l,maxx);
quicksort(l,p-1);
quicksort(p+1,maxx);
}
}
int main()
{
cin>>n;
cin>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
quicksort(1,n);
int dem=0,tong=0;
while(tong<m)
{
dem++;
tong+=a[dem];
}
cout<<dem;
return 0;
}