比赛 20120722 评测结果 AAAAAAAAAA
题目名称 杀手游戏 最终得分 100
用户昵称 苏轼 运行时间 0.004 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2012-07-22 12:45:39
显示代码纯文本
#include<fstream>
#include<sstream>
#include<algorithm>
#include<cmath>
#include<string>
#include<list>
#include<vector>
#include<deque>
#include<queue>
#include<map>

using namespace std;
ifstream fi("bang.in");
ofstream fo("bang.out");

string k;
struct people
{
	int bang;
	int grenade;
	int ghost;
	int knife;
	int miss;
	int parry;
	int hp;
	people *enemy;
	
	void mp(string k)
	{
		if(k=="Bang")
			bang++;
		if(k=="Grenade")
			grenade++;
		if(k=="Ghost")
			ghost++;
		if(k=="Knife")
			knife++;
		if(k=="Miss")
			miss++;
		if(k=="Parry")
			parry++;
	}
	void cp()
	{
		if(ghost)
		{
			if(ghost<=enemy->bang)
			{
				enemy->bang-=ghost;
				ghost=0;
			}
			else
			{
				ghost-=enemy->bang;
				enemy->bang=0;
				enemy->hp-=ghost;
				ghost=0;
			}
		}
		if(bang)
		{
			if(enemy->parry)
			{
				bang--;
				enemy->parry--;
				fi>>k;
				enemy->mp(k);
			}
			else
				if(enemy->miss)
				{
					bang--;
					enemy->miss--;
				}
				else
				{
					bang--;
					enemy->hp--;
				}
		}
		if(grenade)
		{
			for(int i=0;i<grenade;i++)
				if(enemy->parry)
				{
					grenade--;
					enemy->parry--;
					fi>>k;
					enemy->mp(k);
				}
				else
					break;
			if(grenade<=enemy->miss)
			{
				enemy->miss-=grenade;
				grenade=0;
			}
			else
			{
				grenade-=enemy->miss;
				enemy->miss=0;
				enemy->hp-=grenade;
				grenade=0;
			}
		}
		if(knife)
		{
			enemy->hp-=knife;
			knife=0;
		}
	}
	void qp()
	{
		while(bang+miss+parry>hp)
		{
			if(bang)
				bang--;
			else
				if(miss)
					miss--;
				else
					parry--;
		}
	}
	void init()
	{
		bang=0;
		grenade=0;
		ghost=0;
		knife=0;
		miss=0;
		parry=0;
		hp=4;
	}
}a,b;
int main()
{
	a.enemy=&b;
	b.enemy=&a;
	while(1)
	{
		if(k==".")
			break;
		a.init();
		b.init();
		for(int i=0;i<4;i++)
		{
			fi>>k;
			a.mp(k);
		}
		for(int i=0;i<4;i++)
		{
			fi>>k;
			b.mp(k);
		}
		while(1)
		{
			fi>>k;
			if(k=="===")
				break;
			if(k==".")
				break;
			a.mp(k);
			fi>>k;
			a.mp(k);
			a.cp();
			a.qp();
			if(b.hp<=0)
			{
				fo<<"WIN"<<endl;
				break;
			}
			fi>>k;
			b.mp(k);
			fi>>k;
			b.mp(k);
			b.cp();
			b.qp();
			if(a.hp<=0)
			{
				fo<<"LOSE"<<endl;
				break;
			}
		}
		if(k!="==="&&k!=".")
			while(k!="===")
				fi>>k;
	}
	fi.close();
	fo.close();
	return 0;
}