/***************
Problem from :ds
Problem describe :
贪心策略:
每击败一个英雄要扣除相应血量
击败第n个英雄时候如果扣除的总血量>当前的血量(初始血量+进行回复的血量)
则从这n个英雄中选择最大的进行回复
如果击败的英雄扣除的总血量<当前的血量(初始血量+进行回复的血量)
自然不需要回复
这样才是最优的
data:2016.12.8
****************/
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<stack>
#include<queue>
#include<ctime>
#include<cstring>
#include<vector>
#include<string>
#define ll __int64
#define inf 0x3f3f3f3f3f
using namespace std;
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
priority_queue<int>que;//默认优先级 从大到小
int i, n, m, sum=0, ans=0, x;
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++)
{
scanf("%d", &x);
que.push(x);
sum+=x;
if(sum>m)
{
m+=que.top();//当前血量+回复的血量
sum-=que.top();//需要扣除的血量总数-回复的血量
que.pop();
ans++;
}
}
printf("%d\n", ans);
return 0;
}