Cod sursa(job #842128)

Utilizator stoicatheoFlirk Navok stoicatheo Data 26 decembrie 2012 11:44:18
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <string.h>
int n, t, mex[256], f[256], p[]={8,2,7,4,1,2,8,1,4,7,2,1};
int main()
{
  freopen("bowling.in", "r", stdin);
  freopen("bowling.out", "w", stdout);

  int i, j;
  for(i = 1; i <= 200 ; i ++)
  {
    memset(f, 0, sizeof(f));

    for(j = 1; j <= i; j ++)
      f[ mex[j - 1] ^ mex[i - j] ] = 1;
    for(j = 1; j < i; j ++)
      f[ mex[j - 1] ^ mex[i - j - 1] ] = 1;
    for(j = 0; f[j]; j ++);
    mex[i] = j;


  }

  int sol, nr, x;
  scanf("%d\n", &t);

  while(t--)
  {
    sol = 0;
    nr = 0;
    scanf("%d ", &n);

    for(i = 1; i <= n + 1; i ++)
    {
      if(i <= n)
        scanf("%d ", &x);
      else
        x = 0;

      if(!x)
      {
        if(nr <= 200)
          sol ^= mex[nr];
        else
        {
          nr -= 201;
          sol ^= p[nr % 12];
        }
        nr = 0;
      }
      else
        nr++;

    }

    if(!sol)
      printf("Fumeanu\n");
    else
      printf("Nargy\n");

  }

  return 0;
}