Pagini recente » Istoria paginii utilizator/materazzi | Cod sursa (job #1001493) | Rating Petrescu Bogdan (bogdan_petrescu) | Monitorul de evaluare | Cod sursa (job #955044)
Cod sursa(job #955044)
#include<cstdio>
#include<vector>
#include<bitset>
using namespace std;
const int N=50000;
int sg[N+5];
bitset<50005> ver;
void init()
{
sg[1]=1;
for(int i=2;i<=N;i++)
{
ver.reset();
int p1=(i-1)/2,p2=(i-1)/2+((i-1)&1);
for(int j=1;j<=20 && p1>=0 && p2<i;j++)
{
ver[sg[p1]^sg[p2]]=1;
--p1;
++p2;
}
p1=(i-2)/2,p2=(i-2)/2+(i&1);
for(int j=1;j<=20 && p1>=0 && p2<i;j++)
{
ver[sg[p1]^sg[p2]]=1;
--p1;
++p2;
}
for(int j=0;j<N;j++)
if(!ver[j])
{
sg[i]=j;
break;
}
}
}
void solve()
{
int i,sz=0,t,sol=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&t);
if(t)
++sz;
else
sol^=sg[sz],
sz=0;
}
sol^=sg[sz];
if(sol)
puts("Nargy");
else
puts("Fumeanu");
///puts(sol?"Nargy\n":"Fumeanu\n");
}
int main()
{
freopen("bowling.in","r",stdin);
freopen("bowling.out","w",stdout);
init();
int T;
for(scanf("%d",&T);T;T--)
solve();
return 0;
}