Cod sursa(job #43198)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 29 martie 2007 21:31:28
Problema Bowling Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>
#include <string>

#define maxx 84
#define maxn 50010

int G[maxx],c[maxx];
int n,rez,x;
int a[maxn];

int main()
{
    freopen("bowling.in","r",stdin);
    freopen("bowling.out","w",stdout);
    
    int i,j,T;
    
    G[0]=0;
    G[1]=1;
    G[2]=2;
    
    for (i=3;i<maxx;i++)
    {
        memset(c,0,sizeof(c));
        for (j=0;j<i;j++) c[G[j]^G[i-j-1]]=1;
        for (j=0;j<i-1;j++) c[G[j]^G[i-j-2]]=1;
        for (j=0;j<maxx;j++) 
          if (c[j]==0)
          {
               G[i]=j;
               break;
          }
    }
    
/*    for (i=0;i<maxx;i++) printf("%d ",G[i]);
    printf("\n");*/
    
    scanf("%d ",&T);
    
    while (T>0) 
    {
          scanf("%d ",&n);
          
          for (i=1;i<=n;i++) scanf("%d ",&a[i]);
          
          rez=0;
          
          for (i=1;i<=n;i++)
            if (a[i]==0) 
            {
               if (x>=84) x=x%12+72;
               rez^=(G[x]);
               x=0;
            }
            else x++;
            
          rez^=(G[x%maxx]);
            
          if (rez==0) printf("Fumeanu\n");
          else printf("Nargy\n");
          
          T--;
    }
    
    return 0;
}