lzdqwq

导航

纸牌游戏(超长大模拟)

根据题意模拟即可,但这代码......

CODE:

#include<bits/stdc++.h>
using namespace std;
int i[20]={0},t[20]={0},m[20]={0},ton[4][10]={0},z[10]={0},cmp[4][10]={0},zz[10][10]={0};
int read()
{
	char a;int n;bool z=true;
	while(1)
	{
		a=getchar();
		if (a>'9'||a<'0')
		{
			if (a=='-')
			{
				z=false;
			}
			continue;
		}
		if (z)
		{
			n=a-'0';
		}
		else
		{
			n=a-'0';
			n-=2*n;
		}
		return n;
	}
}
int main()
{
	int j,n,a,l=0,k,y,cnt=0;
	scanf("%d",&n);
	for (a=1;a<=n;a++)
	{
		memset(z,0,sizeof(z));
		memset(ton,0,sizeof(ton));
		memset(cmp,0,sizeof(cmp));
		memset(zz,0,sizeof(zz));
		for (l=1;l<=7;l++)
		{
			i[l]=read();
		}
		for (l=1;l<=7;l++)
		{
			m[l]=read();
		}
		for (l=1;l<=7;l++)
		{
			t[l]=read();
		}
		sort(i+1,i+1+7);
		sort(m+1,m+1+7);
		sort(t+1,t+1+7);
		
		
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (i[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[1]=-1;
		}
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (m[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[2]=-1;
		}
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (t[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[3]=-1;
		}
		
		if (z[1]==-1&&z[2]==-1&&z[3]==-1)
		{
			printf("Draw!\n");
			continue;
		}
		
		for(;z[1]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (i[j]!=-1)
				{
					ton[1][i[j]]++;
				}
			}
			if (ton[1][1]>=2&&ton[1][3]>=1&&ton[1][4]>=1&&ton[1][5]>=1)
			{
				z[1]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[1][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[1]=9;
						cmp[1][1]=j;
						break;
					}
				}
			}
			if (z[1]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[1][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[1]=8;
						cmp[1][1]=j;
						break;
					}
				}
			}
			if (z[1]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=5)
				{
					z[1]=7;
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l]>=2)
							{
								z[1]=6;
								cmp[1][1]=j;
								cmp[1][2]=l;
								break;
							}
						}
					}
					if (z[1]==6)
					{
						break;
					}
				}
			}
			if (z[1]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								z[1]=5;
								cmp[1][1]=j;
								cmp[1][2]=l;
								break;
							}
						}
					}
					if (z[1]==5)
					{
						break;
					}
				}
			}
			if (z[1]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l]>=2)
							{
								z[1]=4;
								cmp[1][1]=j;
								cmp[1][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[1][k])
										{
											cmp[1][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[1]==4)
					{
						break;
					}
				}
			}
			if (z[1]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=3)
				{
					z[1]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[1][k])
										{
											cmp[1][3]=k;
											break;
										}
									}
								}
								cmp[1][2]=l;
								break;
							}
						}
					}
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=2)
				{
					z[1]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][4]=l;
								break;
							}
						}
					}
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==2)
			{
				break;
			}
			
			z[1]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					 cmp[1][5]=j;
					 j--;
					 break;
				}
			}
			if (z[1]==1)
			{
				break;
			}
		}
		
		
		for(;z[2]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (m[j]!=-1)
				{
					ton[2][m[j]]++;
				}
			}
			if (ton[2][1]>=2&&ton[2][3]>=1&&ton[2][4]>=1&&ton[2][5]>=1)
			{
				z[2]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[2][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[2]=9;
						cmp[2][1]=j;
						break;
					}
				}
			}
			if (z[2]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[2][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[2]=8;
						cmp[2][1]=j;
						break;
					}
				}
			}
			if (z[2]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=5)
				{
					z[2]=7;
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l]>=2)
							{
								z[2]=6;
								cmp[2][1]=j;
								cmp[2][2]=l;
								break;
							}
						}
					}
					if (z[2]==6)
					{
						break;
					}
				}
			}
			if (z[2]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								z[2]=5;
								cmp[2][1]=j;
								cmp[2][2]=l;
								break;
							}
						}
					}
					if (z[2]==5)
					{
						break;
					}
				}
			}
			if (z[2]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l]>=2)
							{
								z[2]=4;
								cmp[2][1]=j;
								cmp[2][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[2][k])
										{
											cmp[2][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[2]==4)
					{
						break;
					}
				}
			}
			if (z[2]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=3)
				{
					z[2]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[2][k])
										{
											cmp[2][3]=k;
											break;
										}
									}
								}
								cmp[2][2]=l;
								break;
							}
						}
					}
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=2)
				{
					z[2]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][4]=l;
								break;
							}
						}
					}
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==2)
			{
				break;
			}
			
			z[2]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					 cmp[2][5]=j;
					 j--;
					 break;
				}
			}
			if (z[2]==1)
			{
				break;
			}
		}
		
		
		
		
		for(;z[3]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (t[j]!=-1)
				{
					ton[3][t[j]]++;
				}
			}
			if (ton[3][1]>=2&&ton[3][3]>=1&&ton[3][4]>=1&&ton[3][5]>=1)
			{
				z[3]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[3][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[3]=9;
						cmp[3][1]=j;
						break;
					}
				}
			}
			if (z[3]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[3][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[3]=8;
						cmp[3][1]=j;
						break;
					}
				}
			}
			if (z[3]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=5)
				{
					z[3]=7;
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l]>=2)
							{
								z[3]=6;
								cmp[3][1]=j;
								cmp[3][2]=l;
								break;
							}
						}
					}
					if (z[3]==6)
					{
						break;
					}
				}
			}
			if (z[3]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								z[3]=5;
								cmp[3][1]=j;
								cmp[3][2]=l;
								break;
							}
						}
					}
					if (z[3]==5)
					{
						break;
					}
				}
			}
			if (z[3]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l]>=2)
							{
								z[3]=4;
								cmp[3][1]=j;
								cmp[3][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[3][k])
										{
											cmp[3][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[3]==4)
					{
						break;
					}
				}
			}
			if (z[3]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=3)
				{
					z[3]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[3][k])
										{
											cmp[3][3]=k;
											break;
										}
									}
								}
								cmp[3][2]=l;
								break;
							}
						}
					}
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=2)
				{
					z[3]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][4]=l;
								break;
							}
						}
					}
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==2)
			{
				break;
			}
			
			z[3]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					 cmp[3][5]=j;
					 j--;
					 break;
				}
			}
			if (z[3]==1)
			{
				break;
			}
		}
		
		if (z[1]>z[2])
		{
			zz[1][2]=1;
		}
		if (z[1]<z[2])
		{
			zz[1][2]=0;
		}
		if (z[1]==z[2])
		{
			switch(z[1])
			{
				case -1:
				case 10:zz[1][2]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[1][1]>cmp[2][1])
				{
					zz[1][2]=1;
				}
				else
				{
					if (cmp[1][1]<cmp[2][1])
					{
						zz[1][2]=0;
					}
					else
					{
						zz[1][2]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[1][2]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[1][2]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==5)
				{
					zz[1][2]=2;
				}break;
				case 1:for (j=1;j<=5;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==6)
				{
					zz[1][2]=2;
				}break;
			}
		}
		
		
		if (z[1]>z[3])
		{
			zz[1][3]=1;
		}
		if (z[1]<z[3])
		{
			zz[1][3]=0;
		}
		if (z[1]==z[3])
		{
			switch(z[1])
			{
				case -1:
				case 10:zz[1][3]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[1][1]>cmp[3][1])
				{
					zz[1][3]=1;
				}
				else
				{
					if (cmp[1][1]<cmp[3][1])
					{
						zz[1][3]=0;
					}
					else
					{
						zz[1][3]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[1][3]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[1][3]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==5)
				{
					zz[1][3]=2;
				}break;
				case 1:for (j=1;j<=5;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==6)
				{
					zz[1][3]=2;
				}break;
			}
		}
		
		if (z[2]>z[3])
		{
			zz[2][3]=1;
		}
		if (z[2]<z[3])
		{
			zz[2][3]=0;
		}
		if (z[2]==z[3])
		{
			switch(z[2])
			{
				case -1:
				case 10:zz[2][3]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[2][1]>cmp[3][1])
				{
					zz[2][3]=1;
				}
				else
				{
					if (cmp[2][1]<cmp[3][1])
					{
						zz[2][3]=0;
					}
					else
					{
						zz[2][3]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[2][3]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[2][3]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==5){
					zz[2][3]=2;
				}break;
				case 1:for (j=1;j<=5;j++){
					if (cmp[2][j]>cmp[3][j]){
						zz[2][3]=1;
						break;
					}
					else{
						if (cmp[2][j]<cmp[3][j]){
							zz[2][3]=0;
							break;
						}
					}
				}
				if(j==6){
					zz[2][3]=2;
				}break;
			}
		}
		if (zz[1][2]==2&&zz[1][3]==1){
			printf("TTL l0se!\n");
			continue;
		}
		if (zz[2][3]==2&&zz[1][3]==2){
			printf("Draw!\n");
			continue;
		}
		if (zz[1][3]==2&&zz[1][2]==1){
			printf("Magolor l0se!\n");
			continue;
		}
		if (zz[2][3]==2&&zz[1][2]==0){
		    printf("I l0se!\n");
			continue;
		}
		if (zz[1][2]==1&&zz[1][3]==1){
			printf("I w1n!\n");
			continue;
		}
		if (zz[1][2]==0&&zz[2][3]==1){
			printf("Magolor w1n!\n");
			continue;
		}
		if (zz[1][3]==0&&zz[2][3]==0){
			printf("TTL w1n!\n");
			continue;
		}
	}
	return 0;
}

posted on 2024-05-03 14:57  lzdqwq  阅读(7)  评论(0编辑  收藏  举报