记录编号 41371 评测结果 AAAAAAAAAA
题目名称 杀手游戏 最终得分 100
用户昵称 Gravatar苏轼 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2012-07-22 15:11:08 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
struct hehe
{
	int q[6];
	int health;
	int number;
}w[2];
int ans=-1,o=0;
string s;
string f[6];
void chu(int x,int ji);
void qipai(int x);
int main()
{
	freopen ("bang.in","r",stdin);
	freopen ("bang.out","w",stdout);
	f[0]="Ghost";
	f[1]="Grenade";
	f[2]="Bang";
	f[3]="Knife";
	f[4]="Miss";
	f[5]="Parry";
	while (1)
	{
		if (ans!=-1)
		{
			cin>>s;
			if (s==".")
				break;
		}
		if (s=="==="||o==0)
		{
			ans=-1;
			w[0].health=4;
			w[0].number=4;
			w[1].health=4;
			w[1].number=4;
			for (int i=0;i<6;i++)
			{
				w[0].q[i]=0;
				w[1].q[i]=0;
			}
			for (int i=0;i<4;i++)
			{
				cin>>s;
				if (s=="bang.in")
				{
					i--;
					continue;
				}
				if (s==".")
					return 0;
				for (int j=0;j<6;j++)
				{
					if (s==f[j])
					{
						w[0].q[j]++;
						break;
					}
				}
			}
			for (int i=0;i<4;i++)
			{
				cin>>s;
				for (int j=0;j<6;j++)
				{
					if (s==f[j])
					{
						w[1].q[j]++;
						break;
					}
				}
			}
			o++;
		}
		int ji=0;
		while (ans==-1)
		{
			for (int i=0;i<2;i++)
			{
				cin>>s;
				for (int j=0;j<6;j++)
				{
					if (s==f[j])
					{
						w[ji].q[j]++;
						w[ji].number++;
						break;
					}
				}
			}
			for (int i=0;i<4;i++)
			{
				if (i==2&&w[ji].q[i]>0)
				{
					w[ji].q[i]--;
					w[ji].number--;
					chu(i,1-ji);
					continue;
				}
				while (w[ji].q[i]>0)
				{
					w[ji].q[i]--;
					w[ji].number--;
					chu(i,1-ji);
				}
			}
			if (w[ji].number>w[ji].health)
			{
				qipai(ji);
				w[ji].number=w[ji].health;
			}
			ji=1-ji;
			if (ans!=-1)
			{
				if (ans==0)
					cout<<"WIN"<<endl;
				else
					cout<<"LOSE"<<endl;
			}
		}
	}
	return 0;
}
void chu(int x,int ji)
{
	if (x==0)
	{
		if (w[ji].q[2]>0)
		{
			w[ji].q[2]--;
			w[ji].number--;
			return;
		}
		else
		{
			w[ji].health--;
			if (w[ji].health<1)
				ans=1-ji;
		}
	}
	if (x==1)
	{
		if (w[ji].q[5]>0)
		{
			w[ji].q[5]--;
			cin>>s;
			for (int j=0;j<6;j++)
			{
				if (s==f[j])
				{
					w[ji].q[j]++;
					break;
				}
			}
			return;
		}
		if (w[ji].q[4]>0)
		{
			w[ji].q[4]--;
			w[ji].number--;
			return;
		}
		w[ji].health--;
		if (w[ji].health<1)
			ans=1-ji;
	}
	if (x==2)
	{
		if (w[ji].q[5]>0)
		{
			w[ji].q[5]--;
			cin>>s;
			for (int j=0;j<6;j++)
			{
				if (s==f[j])
				{
					w[ji].q[j]++;
					break;
				}
			}
			return;
		}
		if (w[ji].q[4]>0)
		{
			w[ji].q[4]--;
			w[ji].number--;
			return;
		}
		w[ji].health--;
		if (w[ji].health<1)
			ans=1-ji;
	}
	if (x==3)
	{
		w[ji].health--;
		if (w[ji].health<1)
			ans=1-ji;
	}
}
void qipai(int x)
{
	for (int i=0;i<w[x].number-w[x].health;i++)
	{
		if (w[x].q[2]>0)
		{
			w[x].q[2]--;
			continue;
		}
		if (w[x].q[4]>0)
		{
			w[x].q[4]--;
			continue;
		}
		if (w[x].q[5]>0)
		{
			w[x].q[5]--;
			continue;
		}
	}
}