Pagini recente » Cod sursa (job #788872) | Cod sursa (job #1473974) | Cod sursa (job #1031320) | Cod sursa (job #235731) | Cod sursa (job #264545)
Cod sursa(job #264545)
#include <fstream.h>
int g[5001], a[5001];
int mex(int a[], int n){
int nr=0, i, ok;
while(1){
for(i = 0, ok = 1; i < n && ok; i++)
if(a[i] == nr) ok = 0;
if(ok) return nr;
nr++;
}
}
void grundy(){
int i, j, n=85, k;
g[0] = 0; g[1] = 1;
for(i = 2; i < n; i++) {
for(k = 0, j = 1; j <= i; j++){
a[k++] = g[j-1]^g[i-j];
if(j < i) a[k++] = g[j-1]^g[i-j-1];
}
g[i] = mex(a, k);
}
}
int main(){
ifstream f("bowling.in");
ofstream fout("bowling.out");
int T, i, nr, REZ, x, G, n;
grundy();
f>>T;
while(T--){
f>>n;
REZ = 0; nr = 0;
for(i = 0; i <= n; i++){
if(i < n) f>>x; else x = 0;
if(x == 1) nr++;
else { if(nr < 72) G = g[nr];
else G = g[72 + nr%12];
REZ ^= G;
nr = 0;
}
}
if(REZ) fout<<"Nargy\n";
else fout<<"Fumeanu\n";
}
f.close();
fout.close();
return 0;
}