Cod sursa(job #235317)
Utilizator | Data | 23 decembrie 2008 13:16:15 | |
---|---|---|---|
Problema | Bowling | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.09 kb |
# include <cstdio>
# define FIN "bowling.in"
# define FOUT "bowling.out"
# define max(a,b) (a>b?a:b)
# define MAXN 1005
int T, N, i, j, ct, rez, x;
int SG[MAXN];
int S[MAXN];
void procesez(int N)
{
SG[0] = 0;
for (i = 1; i <= N; ++i)
{
for (j = 0; j <= N; ++j)
S[j] = 0;
for (j = 1; j <= i; ++j)
{
S[SG[j-1]^SG[i-j]] = 1;
S[SG[j-1]^SG[max(i-j-1,0)]] = 1;
}
for (j = 0; j <= N; ++j)
if (S[j] == 0)
{
SG[i] = j;
break;
}
}
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
procesez(83); //de la 72 se repeta cu perioada 12
scanf("%d",&T);
for (; T; --T)
{
scanf("%d",&N);
ct = rez = 0;
for (i = 1; i <= N; ++i)
{
scanf("%d",&x);
if (!x)
{
if (ct <= 71) rez ^= SG[ct];
else
{
ct = (ct - 71) % 12;
if (!ct) ct = 12;
rez ^= SG[71 + ct];
}
ct = 0;
} else
++ct;
}
if (ct)
{
if (ct <= 71) rez ^= SG[ct];
else
{
ct = (ct - 71) % 12;
if (!ct) ct = 12;
rez ^= SG[71 + ct];
}
}
if (rez) printf("Nargy\n");
else printf("Fumeanu\n");
}
return 0;
}