记录编号 372893 评测结果 AAAAAAAAAA
题目名称 [USACO Dec07] 书架 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2017-02-19 15:09:54 内存使用 0.70 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
#define MAXN 100000
#define is_num(tmp) (tmp<='9'&tmp>='0')
//#define LOCAL
class heap{
private:
	int s[MAXN];
	int en;
public:
	void push(const int&num)
	{
		++en;
		s[en]=num;
		int now(en),num_1;
		while(now!=1&&num>s[num_1=now>>1])
		{
			s[now]=s[num_1];
			s[num_1]=num;
			now=num_1;
		}
		return ;
	}
	int top()
	{
		return s[1];
	}
	void pop()
	{
		s[1]=s[en];
		--en;
		int tmp(s[1]),now(1),num_1,num_2;
		while((num_1=now<<1)<=en&&tmp<max(s[num_1],s[num_2=num_1|1]))
		{
			if(s[num_1]>s[num_2])
			{
				s[now]=s[num_1];
				s[num_1]=tmp;
				now=num_1;
			}
			else
			{
				s[now]=s[num_2];
				s[num_2]=tmp;
				now=num_2;
			}
		}
		return ;
	}
}k;
inline int in()
{
	char tmp(getchar());
	int res(0);
	while(!is_num(tmp))tmp=getchar();
	while(is_num(tmp))
		res=(res<<1)+(res<<3)+(tmp^48),
		tmp=getchar();
	return res;
}
int n,h,tmp,ans;
int main()
{
#ifndef LOCAL
	freopen("shelf.in","r",stdin);
	freopen("shelf.out","w",stdout);
#endif
	n=in();
	h=in();
	for(int i(0);i<n;++i)
	{
		tmp=in();
		k.push(tmp);
	}
	while(h>0)
	{
		h-=k.top();
		k.pop();
		++ans;
	}
	printf("%d",ans);
	return 0;
}