比赛 20121106 评测结果 AWAWWWWWAWWWAWW
题目名称 二十一点 最终得分 26
用户昵称 Cloud 运行时间 0.030 s
代码语言 C++ 内存使用 3.06 MiB
提交时间 2012-11-06 11:06:49
显示代码纯文本
#include<fstream>
#include<queue>
using namespace std;
struct yu
{
	int win;
	bool f;
	int p;
	int s;
	bool x,y;
	int a,b;
};
queue<yu> dq;
yu tmp;
int main(void)
{
	ifstream fin("jack.in");
	ofstream fout("jack.out");
	int n;
	int v[1000];
	int i;
	fin>>n;
	if(n<6)
	{
		fout<<0;
		return 0;
	}
	for(i=0;i<n;i++)
		fin>>v[i];
	tmp.a=v[0]+v[2];
	tmp.b=v[1]+v[3];
	tmp.s=0;
	tmp.p=4;
	dq.push(tmp);
	int ans=1;
	while(dq.size())
	{
		
		if(tmp.a>21)
		{
			tmp.win++;
			if(tmp.win>ans)
				ans=tmp.win;
			if(n-tmp.p>=6)
			{
				tmp.a=0,tmp.b=0;
				tmp.x=0,tmp.y=0;
				tmp.f=0;
				tmp.a=v[tmp.p]+v[tmp.p+2];
				tmp.b=v[tmp.p+1]+v[tmp.p+3];
				tmp.p+=4;
				dq.push(tmp);
			}
		}
		tmp=dq.front();
		if(tmp.b>21)
		{
			if(n-tmp.p>=6)
			{
				tmp.a=0,tmp.b=0;
				tmp.x=0,tmp.y=0;
				tmp.f=0;
				tmp.a=v[tmp.p]+v[tmp.p+2];
				tmp.b=v[tmp.p+1]+v[tmp.p+3];
				tmp.p+=4;
				dq.push(tmp);
			}
		}
		tmp=dq.front();
		if(!tmp.f&&(tmp.s==0||tmp.s==2))
		{
			if(tmp.a<=16)
			{
				tmp.f=1;
				tmp.a+=v[tmp.p];
				tmp.p++;
				dq.push(tmp);
			}
			else
			{
				tmp.f=1;
				tmp.s++;
				dq.push(tmp);
			}
		}
		tmp=dq.front();
		if(tmp.f&&(tmp.s==0||tmp.s==1))
		{
			
			tmp.f=0;
			tmp.b+=v[tmp.p];
			tmp.p++;
			dq.push(tmp);
			tmp=dq.front();
			tmp.f=0;
			tmp.s+=2;
			dq.push(tmp);
			tmp=dq.front();
			if(tmp.s==1&&tmp.a<tmp.b)
			{
				tmp.win++;
				if(tmp.win>ans)
					ans=tmp.win;
				if(n-tmp.p>=6)
				{
					tmp.a=0,tmp.b=0;
					tmp.x=0,tmp.y=0;
					tmp.f=0;
					tmp.a=v[tmp.p]+v[tmp.p+2];
					tmp.b=v[tmp.p+1]+v[tmp.p+3];
					tmp.p+=4;
					dq.push(tmp);
				}
			}
		}
		tmp=dq.front();
		if(tmp.s==3)
		{
			if(tmp.b>tmp.a)
			{
				tmp.win++;
				if(tmp.win>ans)
					ans=tmp.win;
			}
			if(n-tmp.p>=6)
			{
				tmp.a=0,tmp.b=0;
				tmp.x=0,tmp.y=0;
				tmp.f=0;
				tmp.a=v[tmp.p]+v[tmp.p+2];
				tmp.b=v[tmp.p+1]+v[tmp.p+3];
				tmp.p+=4;
				dq.push(tmp);
			}
		}
		dq.pop();
	}
	fout<<ans;
	fin.close();
	fout.close();
	return 0;
}