Cod sursa(job #989597)

Utilizator raulstoinStoin Raul raulstoin Data 25 august 2013 23:00:33
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<vector>
#include<bitset>

#define NMAX 50005

using namespace std;

ifstream fin("bowling.in");
ofstream fout("bowling.out");

int t,n,sol,sg[NMAX];
vector<int> G[NMAX];
bitset<NMAX> used;

inline int period(int x)
{
	if(x<72)
		return x;
	return 72+(x-72)%12;
}

void sprague_grundy()
{
	for(int i=1,j,k;i<=84;i++)
	{
		used.reset();
		for(j=1,k=i/2+1;j<=k;j++)
		{
			used[ sg[j-1]^sg[i-j] ] = 1;
			used[ sg[j-1]^sg[i-j-1] ] = 1;
		}
		for(j=0;used[j];j++);
		sg[i]=j;
	}
}

void read()
{
	fin>>n;
	int i,k=0,x;
	sol=0;
	for(i=0;i<n;i++)
	{
		fin>>x;
		if(x)
			k++;
		else
		{
			sol^=sg[period(k)];
			k=0;
		}
	}
	if(k)
		sol^=sg[period(k)];
}

int main()
{
	fin>>t;
	sprague_grundy();
	while(t--)
	{
		read();
		if(sol)
			fout<<"Nargy\n";
		else
			fout<<"Fumeanu\n";
	}
	return 0;
}