Cod sursa(job #2019254)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 7 septembrie 2017 13:24:31
Problema Bowling Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <iostream>
#include <cstdio>
#define Nmax 50002
using namespace std;


int n,t,x,DP[Nmax],nr,mx;
int uz[Nmax];

void add(int nr)
{
    for (int i=mx+1;i<=nr;i++)
    {
        for (int a = 0,b = i-1;a<=b;a++,b--)
            uz[DP[a]^DP[b]] = i;

        int j;
        for (j=0;uz[j]==i || uz[j]==i-1;j++);
        DP[i] = j;
    }
    mx = nr;
}

int main()
{
    freopen("bowling.in","r",stdin);
    freopen("bowling.out","w",stdout);

    scanf("%d",&t);

    DP[1] = 1;
    uz[0] = 1;
    add(100);

    for (int i=101;i<=Nmax-1;i++)
        DP[i] = DP[i-12];

    while (t--)
    {
        scanf("%d",&n);
        int rez = 0;
        nr = 0;
        for (int i=1;i<=n;i++)
        {
            scanf("%d",&x);
            if (x==0)
            {
                rez ^= DP[nr];
                nr = 0;
            }
            else
                nr++;
        }
        rez ^= DP[nr];
        if (rez==0)
            cout<<"Fumeanu\n";
        else
            cout<<"Nargy\n";
    }


    return 0;
}