Cod sursa(job #965834)

Utilizator geniucosOncescu Costin geniucos Data 24 iunie 2013 20:00:04
Problema Bowling Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<cstring>
using namespace std;
int nr,n,s,T,i,j,ap[109],sg[109];
int poz(int i)
{
    if(i<=70) return i;
    return 70+(i-71)%12;
}
int main()
{
freopen("bowling.in","r",stdin);
freopen("bowling.out","w",stdout);
scanf("%d",&T);
sg[0]=0;
for(i=1;i<=82;i++)
{
    memset(ap,0,sizeof(ap));
    for(j=1;j<=i;j++)
        ap[sg[j-1]^sg[i-j]]=1;
    for(j=1;j<i;j++)
        ap[sg[j-1]^sg[i-j-1]]=1;
    for(j=0;j<=10;j++)
        if(ap[j]==0) break;
    sg[i]=j;
}
while(T)
{
    T--;
    scanf("%d",&n);
    s=0;
    nr=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&j);
        if(j==1) nr++;
        else
        {
            if(nr) s^=sg[poz(nr)];
            nr=0;
        }
    }
    if(nr) s^=sg[poz(nr)];
    if(s) printf("Nargy\n");
    else printf("Fumeanu\n");
}
return 0;
}