Cod sursa(job #324899)

Utilizator vanila_CPPIonescu Victor Cristian vanila_CPP Data 17 iunie 2009 20:52:28
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#define FIN "bowling.in"
#define FOUT "bowling.out"
#define WHERE 71+12
using namespace std;
int def[WHERE*3];
int SG[WHERE+2];
int T;


void iofile(void){

	freopen(FIN,"rt",stdin);
	freopen(FOUT,"wt",stdout);

}

void get_SG(void){

	SG[0]=0;
	for (int i=1;i<=WHERE;++i) {

		memset(def,0,sizeof(def));
		for (int j=1;j<=i;++j){

			def[SG[j-1]^SG[i-j]]++;
		}
		for (int j=1;j<i;++j){

			def[SG[j-1]^SG[i-(j+1)]]++;
		}

		int x=0;
		while (def[x])++x;

		SG[i]=x;
	}

	
}


void solve(void){

	scanf("%d",&T);

	int N;

	for (int test=1;test<=T;++test){

		scanf("%d",&N);
		int nr1=0;
		int x,sum=0;
		for (int i=1;i<=N;++i) {
			scanf("%d",&x);
			if (x){
				++nr1;
			} else if (nr1){
				if (nr1<=71) sum^=SG[nr1];
				if (nr1>71){
					nr1-=71;
					nr1%=12;
					if (nr1==0){nr1=12;}
					sum^=SG[71+nr1];
				}
				nr1=0;
			}
		}
		if (nr1){

			if (nr1<=71) sum^=SG[nr1];
			if (nr1>71){
				nr1-=71;
				nr1%=12;
				if (nr1==0){nr1=12;}
				sum^=SG[71+nr1];
			}
		}
		if (sum==0){ printf("Fumeanu\n");} else { printf("Nargy\n");}
	}
	fclose(stdin);
	fclose(stdout);
	return ;
}


int main(void){

	iofile();
	get_SG();
	solve();
	return 0;
}