Cod sursa(job #940441)

Utilizator rudarelLup Ionut rudarel Data 16 aprilie 2013 11:27:11
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <string.h>
 
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 50001
 
int A[128],B[128],C[12],sol,n,T;
 
int sg(int x)
{
    return x>=100?C[x%12]:A[x];
}
 
int main()
{
    freopen("bowling.in","r",stdin);
    freopen("bowling.out","w",stdout);
 
    int i,j,iii,x;
    A[0]=0;
    A[1]=1;
    A[2]=2;
    A[3]=3;
    FOR(i,3,100)
    {
        memset(B,0,sizeof(B));
        B[A[i-1]]=1;
        FOR(j,1,i+1)
            B[A[j-1]^A[i-j]]=1;
        FOR(j,1,i)
            B[A[j-1]^A[i-j-1]]=1;
        FOR(j,0,nmax)
            if(!B[j])
                break;
        C[i%12]=A[i]=j;
    }
    scanf("%d",&T);
    FOR(iii,0,T)
    {
        scanf("%d",&n);
        j=sol=0;
        FOR(i,0,n)
        {
            scanf("%d",&x);
            if(x)
                j++;
            else
                sol^=sg(j),j=0;
        }  
        sol^=sg(j);
        printf("%s\n",sol?"Nargy":"Fumeanu");
    }
    return 0;
}