【题目分析】
基于堆的贪心。
【代码】
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int a[30001];
priority_queue <int> q;
int main()
{
int n,t=1,now,cnt=0;
scanf("%d%d",&n,&now);
for (int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
while (a[t]<now) q.push(a[t]),t++;
while (now<=a[n])
{
while (a[t]<now) q.push(a[t]),t++;
if (q.empty()) {printf("-1\n%d\n",now); return 0;}
now+=q.top();
cnt++;
q.pop();
}
printf("%d\n",cnt);
}