Cod sursa(job #39575)

Utilizator devilkindSavin Tiberiu devilkind Data 26 martie 2007 20:40:52
Problema Bowling Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <string.h>
#define NMAX 50002
#define SGMAX 200

FILE *f = fopen("bowling.in","rt"), *g = fopen("bowling.out","wt");

long int SG[NMAX],n,i,j,k,hash[NMAX],v[NMAX],l,x,t;

int main()
{
SG[1]=1;
SG[0]=0;
for (i=2;i<=SGMAX;i++)
    {
    k=i-1;
    for (j=0;j<=SGMAX;j++) hash[j]=0;
    for (j=0;j<=k/2+1;j++)
	hash[ SG[j]^SG[k-j] ]=1;
    k=i-2;
    for (j=0;j<=k/2+1;j++)
	hash[ SG[j]^SG[k-j] ]=1;
    j=0;
    while (hash[j])
	  j++;
    SG[i]=j;
    }
fscanf(f,"%ld",&t);
long int i;

for (i=1;i<=t;i++)
    {
    fscanf(f,"%ld",&n);
    x=0;
    for (j=1;j<=n;j++)              
        {fscanf(f,"%ld",&k);
        if (k) l++;
	   else if (l>0)
		{v[++x]=l;
		l=0;}
	}
    if (l>0) {v[++x]=l;l=0;}
    k=0;
    for (j=1;j<=x;j++)
        k=k^SG[ v[j] ];
    if (k) fprintf(g,"Nargy\n");
       else fprintf(g,"Fumeanu\n");
    }

fclose(f);
fclose(g);
return 0;
}