Cod sursa(job #362571)

Utilizator ProtomanAndrei Purice Protoman Data 9 noiembrie 2009 23:46:03
Problema Bowling Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <algorithm>
#include <stdio.h>

#define MAX 50010

using namespace std;

int n, testCases;
int sg[MAX], sel[MAX];

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

	for (int i = 1; i < 83; i++)
	{
		memset(sel, 0, sizeof(sel));
		for (int j = 0; j <= (i - 1) / 2 + 1; j++)
			sel[sg[j] ^ sg[i - 1 - j]] = 1;		

		for (int j = 0; j <= (i - 2) / 2 + 1; j++)
			sel[sg[j] ^ sg[i - 2 - j]] = 1;

		for (int j = 0; sel[j]; j++, sg[i] = j);
	}
	for (int i = 83; i < MAX; i++)
		sg[i] = sg[71 + (i - 71) % 12];

	for (scanf("%d", &testCases); testCases; testCases--)
	{
		scanf("%d", &n);

		int sumXor = 0, l = 0;
		for (int i = 1; i <= n; i++)
		{
			int x;
			scanf("%d", &x);

			if (!x)
				sumXor ^= sg[l], l = 0;
			else l++;
		}
		sumXor ^= l;

		printf("%s\n", (sumXor)? "Nargy" : "Fumeanu");
	}

	fclose(stdin);
	fclose(stdout);
	return 0;
}