Cod sursa(job #202932)

Utilizator CezarMocanCezar Mocan CezarMocan Data 12 august 2008 12:03:39
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <cstring>

using namespace std;

int i,j,sg[50000],k,v[50000],t,nr,s,rez,n;

int main(){
freopen("bowling.in","r",stdin);
freopen("bowling.out","w",stdout);
sg[0]=0;
sg[1]=1;
sg[2]=2;
for (i=3;i<=100;i++)
	{
	//dau jos una
	memset(v,0,sizeof(v));
	for (j=0;j<=i-1;j++)
		v[sg[j]^(sg[i-j-1])]=1;
	//dau jos doua
	for (j=0;j<=i-2;j++)
		v[sg[j]^(sg[i-j-2])]=1;
	for (j=0;j<=100;j++)
		if (v[j]==0)
			{	
 			sg[i]=j;
			break;
			}
	}
scanf("%d",&t);
for (j=1;j<=t;j++)
	{
	memset(v,0,sizeof(v));
	scanf("%d",&n);
	nr=0;
	for (i=1;i<=n;i++)
		{
		scanf("%d",&k);
		if (k==1)
			nr++;
		else
			if (nr>0)
				{
				v[0]++;
				v[v[0]]=nr;
				nr=0;
				}
		}
	if (nr!=0)
		{
		v[0]++;
		v[v[0]]=nr;
		}
	rez=0;
	for (i=1;i<=v[0];i++)
		{
		if (v[i]<72)
			s=sg[v[i]];
		else
			s=sg[(v[i]-72)%12+72];
		rez^=s;
		}
	if (rez==0)
		printf("Fumeanu\n");
	else
		printf("Nargy\n");
	}	
return 0;
}