Pagini recente » Statistici Lazar Mirela (ela_tin) | Cod sursa (job #452044) | Cod sursa (job #116783) | Cod sursa (job #1567229) | Cod sursa (job #806887)
Cod sursa(job #806887)
// Jocul Kayles - http://en.wikipedia.org/wiki/Kayles
#include<fstream>
using namespace std;
int T,n,mex[85];
bool viz[100];
inline void PrecalculareMex()
{
int i,j;
mex[0]=0;
for(i=1;i<=83;i++) // numerele mex pentru Kayles sunt periodice dupa 72 cu perioada 12
{
// formez multimea
for(j=0;j<i;j++)
{
viz[mex[j]^mex[i-j-1]]=true; // iau o popica
if(j<i-1)
viz[mex[j]^mex[i-j-2]]=true; // iau doua popici
}
// stabilesc mex pentru multime
j=0;
while(viz[j])
j++;
mex[i]=j;
// sterg multimea
j=0;
while(j<100)
viz[j++]=false;
}
}
inline int Perioada(int x)
{
if(x<72)
return x;
return 72+(x-72)%12;
}
int main()
{
int i,lg1,rez,x;
PrecalculareMex();
ifstream fin("bowling.in");
ofstream fout("bowling.out");
fin>>T;
while(T--)
{
fin>>n;
lg1=0;
rez=0;
for(i=1;i<=n;i++)
{
fin>>x;
if(x==0)
{
lg1=Perioada(lg1);
rez=(rez^mex[lg1]);
lg1=0;
}
else
lg1++;
}
if(lg1)
{
lg1=Perioada(lg1);
rez=(rez^mex[lg1]);
}
if(rez==0)
fout<<"Fumeanu\n";
else
fout<<"Nargy\n";
}
fin.close();
fout.close();
return 0;
}