题意;有n个乐器,第i个乐器需要a[i]天练习,现在给k天,求最多练多少种乐器
方法:排序一下再贪心很简单,注意特殊情况~
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node
{
int a,b;
}s[1010];
int cmp(node x,node y)
{
if(x.a==y.a) return x.b<y.b;
return x.a<y.a;
}
int main()
{
int n,k,x,i;
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%d",&s[i].a);
s[i].b=i+1;
}
sort(s,s+n,cmp);
x=0;
for(i=0;i<n;i++)
{
if(s[0].a>k||k==0)
{
i=0;
break;
}
x+=s[i].a;
if(x>=k) break;
}
if(x==k&&k!=0) i++;
printf("%d\n",i);
int j;
for(j=0;j<i;j++)
printf("%d ",s[j].b);
printf("\n");
}