比赛 20150423 评测结果 AAAWAWWWWWWWWW
题目名称 守卫标志物 最终得分 28
用户昵称 Ra-xp 运行时间 0.015 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2015-04-23 10:04:34
显示代码纯文本
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<cmath>
#include<cstdio>
#include<algorithm>
#define MAXN 20+10
using namespace std;
int n, H, ma, ans=-99999999;
bool used[MAXN]={false};
class T
{
public:
	int h, m, s;
	T()
	{
		h=0;
		m=0;
		s=0;
	}
}cow[MAXN];

bool judge(T x, T y)
{
	return x.s>y.s; 
}

void foad(int x, int y, bool *u)
{
	if(y>=H)
	{
		if(ans<x)
		{
			ans=x;
		}
	}
	else 
	{
		for(int i=1;i<n;i++)
		{
			if(u[i]!=true && cow[i].m<x)
			{
				int xi, yi;
				yi=y+cow[i].h;
				if(x-cow[i].m<cow[i].s)
				{
					xi=x-cow[i].m;
				}
				else
				{
					xi=cow[i].s;
				}
				u[i]=false;
				foad(xi, yi, u);
				u[i]=true;
			}
		}
	}
}

int main()
{
	ios::sync_with_stdio(false);
	freopen("guardc.in","r",stdin);
	freopen("guardc.out","w",stdout);
	int i;
	cin>>n>>H;
	for(i=0;i<n;i++)
	{
		cin>>cow[i].h>>cow[i].m>>cow[i].s;
	}

	sort(cow, cow+n, judge);
	used[0]=true;
	foad(cow[0].s, cow[0].h, used);
	
	if(ans!=-99999999)
	{
		cout<<ans<<endl;
	}
	else 
	{
		cout<<"Mark is too tall"<<endl;
	}
	return 0;
}