刚刚学完排序接触贪心 发现了此题需要先排序后贪心 于是自己决定用归并排序(因为试了试其他的都TLE了)后贪心 样例过了就是评测了0分 还望大佬们教一教思路和代码
#include<bits/stdc++.h>
using namespace std;
long long a[1000001],n,m,t,t1;
void qsort(long long a[],long long l,long long r)
{
int i,j,mid;
i=l;
j=r;
mid=a[(l+r)/2];
do
{ while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j) { swap(a[i],a[j]); i++; j--; }
}while(i<=j);
if(l<j) qsort(a,l,j); if(i<r) qsort(a,i,r); }
int main()
{ cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
qsort(a,0,n-1);
for(int i=0;i<n;i++)
if(a[i]<1)
{
cout<<"No answer!!!"<<endl;
}
while(m>0)
{
for(int i=n-1;i>=0;i--)
{
if(m>=a[i])
{
t1++;
m=m-a[i];
continue;
}
}
}
cout<<t1<<endl;
}