WOJ1419-无聊的游戏

xay和amr是两个很无聊的人,现在他两又在玩无聊的游戏。两个人拥有一摞特殊的牌,每张牌上只有一个正整数。现在两人轮流从牌里按顺序翻出一张放在桌上,如果其中一个人翻出的牌上的数字正好与桌上的另一张牌上的数字相同,那么他将获得并拿走这两张牌之间的所有牌(同时也包括这两张)。现在已知这一摞牌的顺序,你知道最终谁获得的牌更多而获胜吗?假设每次游戏由xay先翻牌,如果出现平局则算后翻牌的amr获胜。
例如N=4,牌的顺序为3,10,5,10。首先xay翻到3,然后amr翻到10,xay翻到5,amr翻到10,则amr将获得牌面为10、5、10的3张牌。

输入格式

输入包含多组测试数据。第一行包含一个整数T表示测试数据个数。 对于每个测试数据,第一行包含一个整数N(N<=100),表示牌的数量。第二行包含N个整数,按照顺序分别为每张牌上的整数。

输出格式

对于每组测试数据输出一行。 如果xay获胜则输出"xay"(不含引号,下同),否则输出"amr"。

样例输入

2
3
1 2 2
4
3 10 5 10

样例输出

xay
amr



#include<stdio.h>
#define MAX 100000
int flag[MAX],num[101];;
int main(){
	int n,t,i,k,countx,counta,count;
	scanf("%d",&t);
	while(t--){
 	  	scanf("%d",&n);
 	  	if(n>1){
			for(i=0;i<MAX;i++)
 	        	flag[i]=-1;
        	countx=counta=0;
			for(i=0;i<n;i++){
		    	scanf("%d",&num[i]);			 
				if(flag[num[i]]!=-1){
		        	count=0;
					for(k=flag[num[i]];k<=i;k++)
		            	if(num[k]!=-1)
		                	count++;
		  	    	if(i%2==0)
	        			countx +=count;
					else
						counta +=count;
					for(k=flag[num[i]];k<=i;k++)
		            	num[k]=-1;
				}
				else
			 		flag[num[i]]=i;			       					 
			}
        	if(countx>counta)
				printf("xay\n");
	    	else
	    		printf("amr\n");
	   	}
	}
	return 0;		   
}


猜你喜欢

转载自blog.csdn.net/lxq1071717521/article/details/77929695
今日推荐