Cod sursa(job #39585)

Utilizator pocaituDavid si Goliat pocaitu Data 26 martie 2007 20:46:02
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#include<fstream.h>
#define nmax 50001
unsigned sg[nmax];
void init()
{unsigned i,j,viz[nmax];
 for(i=1,sg[0]=0;i<nmax-1;i++)
   {if(i>50)
	  sg[i]=sg[i]-12;
	else
	{memset(viz,0,sizeof(viz));
	 for(j=0;j<=i/2+1;j++)
	  viz[sg[j]^sg[i-j-1]]=viz[sg[j]^sg[i-j-2]]=1;
	 j=0;
	 while(viz[j]) j++;
	  sg[i]=j;
	 }
	}
}

int main()
{unsigned i,n,d,nr,t,k,s[nmax];
 freopen("bowling.in","r",stdin);
 freopen("bowling.out","w",stdout);

 init();
 scanf("%u",&t);
 for(k=1;k<=t;k++)
   {
	scanf("%u",&n);
	for(i=1;i<=n;i++)
	  scanf("%d",&s[i]);
	for(i=1,d=0;i<=n;i++)
	   {nr=0;
		while(i<=n&&s[i++]==1)
		  nr++;
		i--;
		d^=sg[nr];
		}
	if(!d)
	  printf("Fumeanu\n");
	else printf("Nargy\n");
	}
 fclose(stdout);
 return 0;
 }