Pagini recente » Cod sursa (job #2319621) | Cod sursa (job #1193911) | Cod sursa (job #2231676) | Cod sursa (job #1913791) | Cod sursa (job #2394888)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream fin("bowling.in");
ofstream fout("bowling.out");
const int NMax = 1000;
int Mex[NMax + 5], N, L, Ans, T;
bool A[2 * NMax + 5];
vector <int> V;
int FindMex(int K)
{
for(int i = 1; i < K; i++)
V.push_back(Mex[i] ^ Mex[K - i - 1]);
for(int i = 1; i < K - 1; i++)
V.push_back(Mex[i] ^ Mex[K - i - 2]);
memset(A, 0, sizeof(A));
while(V.size()) A[V.back()] = 1, V.pop_back();
for(int i = 0; i <= 2 * NMax + 3; i++)
if(A[i] == 0)
return i;
}
void Precalc()
{
for(int i = 1; i <= NMax; i++)
Mex[i] = FindMex(i);
}
int main()
{
fin >> T; Precalc();
while(T--)
{
fin >> N; L = Ans = 0;
for(int i = 1, x; i <= N; i++)
fin >> x, ((x == 1) ? (L++) : (Ans ^= Mex[L], L = 0));
Ans ^= Mex[L];
fout << ((Ans) ? "Nargy" : "Fumeanu") << '\n';
}
fin.close();
fout.close();
return 0;
}