比赛 20150423 评测结果 AAATTTATTTTTTT
题目名称 守卫标志物 最终得分 28
用户昵称 slyrabbit 运行时间 10.010 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2015-04-23 09:00:25
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
class cow
{
public:
	int h;
	int w;
	int p;
	cow(){
		h=0;w=0;p=0;
	}
}a[25];
int H,n,h_now=0,p_now=9999999,Max=-1;
bool b[25]={0};
//*********************************不要浮躁***********************************//
void init()
{
	cin>>n>>H;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].h>>a[i].w>>a[i].p;
	}
}
void work(int x)
{
	if(h_now>=H)
	{
		Max=max(Max,p_now);
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		if(!b[i]&&a[i].w<p_now)
		{
			int temp=p_now;
			p_now-=a[i].w;
			p_now=min(p_now,a[i].p);
			h_now+=a[i].h;
			b[i]=1;
			work(i);
			p_now=temp;
			h_now-=a[i].h;
			b[i]=0;
		}
	}
}
int main()
{
	freopen("guardc.in","r",stdin);
	freopen("guardc.out","w",stdout);
	init();
	for(int i=1;i<=n;i++)
	{
		p_now=a[i].p;
		h_now=a[i].h;
		b[i]=1;
	    work(i);
		b[i]=0;
	}
	if(Max>0) cout<<Max;
	else cout<<"Mark is too tall";
	return 0;
}