Cod sursa(job #2456426)

Utilizator stefantagaTaga Stefan stefantaga Data 14 septembrie 2019 12:42:13
Problema Bowling Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.75 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("bowling.in");
ofstream g("bowling.out");
int nim[505],i,j,mex,val,t,n,nr,valoare,x,fr[5005];
int mamadumneavoastra[]={1,2,8,1,4,7,2,1,4,2,7,4};
int main()
{
    nim[0]=0;
    for (i=1;i<=50;i++)
    {
        mex=0;
        for (j=1;j<=5000;j++)
        {
            fr[j]=0;
        }
        for (j=1;j<=i;j++)
        {
            if (j+1<=i)
            {
                val=nim[j-1]^nim[i-j-1];
                fr[val]=1;
            }
            val=nim[j-1]^nim[i-j];
            fr[val]=1;
        }
        for (j=0;j<=5000;j++)
        {
            if (fr[j]==0)
            {
                mex=j;
                break;
            }
        }
        nim[i]=mex;
    }
    f>>t;
    for (;t>0;t--)
    {
        f>>n;
        nr=0;
        valoare=0;
        for (i=1;i<=n;i++)
        {
            f>>x;
            if (x==1)
            {
                nr++;
            }
            else
            {
                if (nr>48)
                {
                    nr=nr-49;
                    valoare=valoare^mamadumneavoastra[nr%12];
                }
                else
                {
                    valoare=valoare^nim[nr];
                }
                nr=0;
            }
        }
        if (nr>48)
                {
                    nr=nr-49;
                    valoare=valoare^mamadumneavoastra[nr%12];
                }
                else
                {
                    valoare=valoare^nim[nr];
                }
        if (valoare==0)
        {
            g<<"Fumeanu";
        }
        else
        {
            g<<"Nargy";
        }
        g<<'\n';
    }
    return 0;
}