Pagini recente » Cod sursa (job #1951806) | Cod sursa (job #569063) | Cod sursa (job #2621090) | Cod sursa (job #3202325) | Cod sursa (job #47556)
Cod sursa(job #47556)
#include <cstdio>
#define infile "bowling.in"
#define outfile "bowling.out"
#define NMAX 50001
#define FIRST "Nargy"
#define SECOND "Fumeanu"
#define PERIOD 12
FILE *fin,*fout;
int N,SG[NMAX];
bool used[NMAX];
void precalc()
{
int i,j;
SG[0]=0;
for(i=1;i<=N && i<84;i++)
{
for(j=0;j<=i;j++)
used[j]=false;
for(j=1;j<=i;j++)
used[ SG[j-1] ^ SG[i-j] ] = true;
for(j=1;j<=i-1;j++)
used[ SG[j-1] ^ SG[i-j-1] ] = true;
j=0;
while(used[j])
j++;
SG[i]=j;
}
for(i=84;i<=N;i++)
SG[i]=SG[i-PERIOD];
}
int main()
{
int i,t,cnt,val,sol;
fin=fopen(infile,"r");
fout=fopen(outfile,"w");
fscanf(fin,"%d",&t);
while(t)
{
fscanf(fin,"%d",&N);
precalc();
cnt=0;
sol=0;
for(i=0;i<N;i++)
{
fscanf(fin,"%d",&val);
if(val)
cnt++;
else
{
sol = sol ^ SG[cnt];
cnt=0;
}
}
if(cnt)
sol = sol ^ SG[cnt];
if(sol)
fprintf(fout,"%s\n",FIRST);
else
fprintf(fout,"%s\n",SECOND);
t--;
}
fclose(fin);
fclose(fout);
return 0;
}