Cod sursa(job #131309)

Utilizator razvi9Jurca Razvan razvi9 Data 3 februarie 2008 16:44:40
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<cstdio>
#include<cstring>
int n,t,i,j,k;
int val[101],mex[101];
//0,1,2,3,1,4,3,2,1,4,2,6,4,1,2,7,1,4,3,2,1,4,6,7,4,1,2,8,5,4,7,2,1,8,6,7,4,1,2,3,1,4,7,2,1,8,2,7,4,1,2,8,1,4,7,2,1,4,2,7,4,1,2,8,1,4,7,2,1,8,6,7,4,1,2,8,1,4,7,2,1,8,2,7,4};
//0,1,2,3,1,4,3,2,1,4,2,6,4,1,2,7,1,4,3,2,1,4,6,7,4,1,2,8,5,4,7,2,1,8,6,7,4,1,2,3,1,4,7,2,1,8,2,7,4,1,2,8,1,4,7,2,1,4,2,7,4,1,2,8,1,4,7,2,1,8,6,7,4,1,2,8,1,4,7,2,1,8,2,7,4,1,2,8,1,4,7,2,1,8,2,7,4,1,2,8,1,
void calc_val()
{val[1]=1;
 for(i=2;i<=100;i++){
	 memset(mex,0,sizeof(mex));
	 mex[val[i-1]]=1;
	 mex[val[i-2]]=1;
	 for(j=2;j<i;j++)
		 mex[val[j-1]^val[i-j]]=1;
	 for(j=2;j<i-1;j++)
		 mex[val[j-1]^val[i-j-1]]=1;
	 for(j=0;j<=100;j++) if(!mex[j]) break;
	 val[i]=j;
	// printf("%d,",val[i]);
 }

}

int main()
{
	freopen("bowling.in","r",stdin);
	freopen("bowling.out","w",stdout);
	calc_val();
	scanf("%d",&t);
	for(;t--;){
		scanf("%d",&n);
		i=0;
		j=0;
		for(;n;--n){
			scanf("%d",&k);
			if(k) i++;
			else{
				if(i<72) j=j^val[i];
				else j=j^val[72+(i-72)%12];
				i=0;}}
		if(k)
			if(i<72) j=j^val[i];
			else j=j^val[72+(i-72)%12];
		printf("%s\n",j?"Nargy":"Fumeanu");}
	fclose(stdout);
	return 0;

 }