Cod sursa(job #2456427)

Utilizator andreiomd1Onut Andrei andreiomd1 Data 14 septembrie 2019 12:42:44
Problema Bowling Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("bowling.in");
ofstream g("bowling.out");

const int NMAX = 5e2  + 5;

int T, N, A[NMAX];

int dp[NMAX], Ap[NMAX];

int main()
{
    dp[0] = 0;
    dp[1] = 1;
    dp[2] = 2;

    for(int i = 3; i <= 500; ++i)
    {
        memset(Ap, 0, sizeof(Ap));

        int mex = 0;

        for(int j = 1; j <= i; ++j)
        {
            int Add = 0;

            if(j < i)
            {
                Add = dp[j - 1] * dp[i - j - 1];

                ++Ap[Add];
            }

            Add = dp[j - 1] * dp[i - j];
            ++Ap[Add];
        }

        for(int j = 0; j <= 500; ++j)
            if(!Ap[j])
            {
                mex = j;

                break;
            }

        dp[i] = mex;
    }

    f >> T;

    while(T--)
    {
        f >> N;

        for(int i = 1; i <= N; ++i)
            f >> A[i];

        int Sum = 0;

        int lc = 0;

        for(int i = 1; i <= N; ++i)
        {
            if(A[i])
                ++lc;
            else
            {
                Sum ^= dp[lc];

                lc = 0;
            }
        }

        if(lc)
            Sum ^= dp[lc];

        if(Sum == 0)
            g << "Fumeanu";
        else g << "Nargy";

        g << '\n';
    }

    return 0;
}