比赛 20150423 评测结果 AAAWAWWWAWWWWW
题目名称 守卫标志物 最终得分 35
用户昵称 ggwdwsbs 运行时间 0.005 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2015-04-23 11:23:29
显示代码纯文本
#include<stdio.h>
const int maxn=1001;
const int INF=2147483600;
int max(int x,int y)
{
	if(x>y) return x;
	else return y;
}
int min(int x,int y)
{
	if(x>y) return y;
	else return x;
}
int high[maxn];
int w[maxn];
int f[maxn];
int vis[maxn];
int n,h,maxx=-INF;
int search(int k,int weight,int height)
{
	if(height>=h)
	{
		maxx=max(maxx,weight);
		return 0;
	}
	if(k>n&&height<h) return 0;
	for(int i=1;i<=n;i++)
	 if(w[i]<=weight&&!vis[i])
	 {
		vis[i]=1;
		search(k+1,min(weight-w[i],f[i]),height+high[i]);
		vis[i]=0;
	 }
}
int main()
{
	freopen("guardc.in","r",stdin);
	freopen("guardc.out","w",stdout);
	scanf("%d%d",&n,&h);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&high[i],&w[i],&f[i]);
	if(n<=7)
	{
		search(1,INF,0);
		if(maxx==-INF) printf("Mark is too tall");
		else printf("%d",maxx);
	}
	else printf("Mark is too tall");
	
}