Cod sursa(job #38128)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 25 martie 2007 14:55:57
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <string.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 50001

int A[128],B[128],C[12],sol,n,T;

int sg(int x)
{
	return x>=100?C[x%12]:A[x];
}

int main()
{
	freopen("bowling.in","r",stdin);
	freopen("bowling.out","w",stdout);

	int i,j,iii,x;
	A[0]=0;
	A[1]=1;
	A[2]=2;
	A[3]=3;
	FOR(i,3,100)
	{
		memset(B,0,sizeof(B));
		B[A[i-1]]=1;
		FOR(j,1,i+1)
			B[A[j-1]^A[i-j]]=1;
		FOR(j,1,i)
			B[A[j-1]^A[i-j-1]]=1;
		FOR(j,0,nmax)
			if(!B[j])
				break;
		C[i%12]=A[i]=j;
	}
	scanf("%d",&T);
	FOR(iii,0,T)
	{
		scanf("%d",&n);
		j=sol=0;
		FOR(i,0,n)
		{
			scanf("%d",&x);
			if(x)
				j++;
			else
				sol^=sg(j),j=0;
		}	
		sol^=sg(j);
		printf("%s\n",sol?"Nargy":"Fumeanu");
	}
	return 0;
}