NYOJ660逃离地球

/*
逃离地球
时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述
据霍金的《时间简史》所述,在几亿年之后将再次发生宇宙大爆炸。在宇宙大爆炸后,地球上将新生出许多生物而不再适合人类生存。
当然其中的生物有好有坏,我们规定其中名叫Angel和Devil分别是善良和邪恶的两种生物。

?  所以当主人公Be.St遇到了Angel他将获得该Angel身上的相应HP的一半,而当他遇到Devil时他将损失Devil身上的HP的一半。

?  当然,在将要逃离地球的终点Be.St可能会遇到一些大Boss,如果此时他的HP连Boss 的HP一半都不到,那么此时他将直接被秒杀。
但当其HP不小于Boss HP的一半时,他将会经过激烈的战斗而获得Boss身上相应HP的一半。

?  我们规定如果Be.St的HP不小于0,则其能成功脱逃,否则视为不能。

?  为了是问题简化我们童话一点,假设一开始Be.St是一直遇到Angel,之后将一直遇到Devil,最后将会是Boss。

现在就请厉害的ACMer帮帮可怜的Be.St,判断他是否能够顺利逃离地球。

输入
第一行输入一个正整数T,代表有T组测试数据(0<T<100)
每一组测试数据第一行都有四个正整数H,A,D,B分别代表Be.St初始HP,Angel的数量,Devil的数量,Boss的数量。
从第三行开始其后的的每一行分别代表A,D,B相应生物的HP(0<H,A,B,D<100)
输出
如果在满足以上的条件后,Be.St可以顺利的逃离地球(即HP>=0),则输出”Win”,相反的情况是输出”Lose”。
样例输入
2
5 3 4 1
1 2 3
1 1 1 1
14
10 4 2 2
2 3 5 1
6 7
6 6
样例输出
Lose
Win
来源
NYIST校赛选拔赛
*/

#include<stdio.h>             //这尼玛需要对boss血量进行排序。。挑小的打。我操了。坑爹啊!!!!
							  //是尼玛最后一句暗示的么!!!!fuck
void selectSort(int a[], int n);

int main()
{
	int time;
	int HpAngel[100], HpDevil[100], HpBoss[100];
	int NumAngel, NumDevil, NumBoss;
	double hp;
	int i;
	double sum;
	int flag;

	scanf("%d", &time);

	while(time--)
	{
		flag = 1;

		scanf("%lf %d %d %d", &hp,  &NumAngel, &NumDevil, &NumBoss);
		
		sum = 0;

		for(i = 0; i < NumAngel; i++)
		{
			scanf("%d", &HpAngel[i]);
			sum += HpAngel[i];
		}

		hp += sum/2;              //获得Angel身上的一半hp

		sum = 0;

		for(i = 0; i < NumDevil; i++)
		{
			scanf("%d", &HpDevil[i]);
			sum += HpDevil[i];
		}
		
		hp -= sum/2;           //损失小Devil身上的一半hp


		for(i = 0; i < NumBoss; i++)
			scanf("%d", &HpBoss[i]);

		selectSort(HpBoss, NumBoss);

		for(i = 0; i < NumBoss; i++)
			if(hp < HpBoss[i]*1.0 / 2)
				{
					flag = 0;
					break;
				}

			else
				hp += HpBoss[i]*1.0 / 2;

		if(flag)
			puts("Win");
		else
			puts("Lose");
	}

	return 0;
}

void selectSort(int a[], int n)
{
	int i, j, t;

	for(i = 0; i < n-1; i++)
		for(j = i; j < n; j++)
			if(a[i] > a[j])
			{
				t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
}
这尼玛真想不出来要排序下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值