Cod sursa(job #2066750)

Utilizator danstefanDamian Dan Stefan danstefan Data 15 noiembrie 2017 13:55:43
Problema Bowling Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
int q,n,i,sg[50010],j,lu,ans,x,k,ve[220];
set<int>st;
int main()
{
    ifstream cin ("bowling.in");
    ofstream cout ("bowling.out");
    cin>>q;
    sg[0]=0;
    for(i=1; i<=100; ++i)
    {
        st.clear();
        k=0;
        for(j=0; j<i; ++j)
        {
            st.insert(sg[j]^sg[i-j-1]);
            if(i-j-2>=0)st.insert(sg[j]^sg[i-j-2]);
        }
        j=0;
        for(auto &it:st)
            if(it==j)++j;
            else break;
        sg[i]=j;

    }
    ///magie....
    for(i=101; i<=50000; ++i)
        sg[i]=sg[i-12];
    while(q--)
    {
        cin>>n;
        lu=0;
        ans=0;
        for(i=1; i<=n; ++i)
        {
            cin>>x;
            if(x)++lu;
            else if(lu!=0)
            {
                ans^=sg[lu];
                lu=0;
            }
        }
        if(lu!=0)ans^=sg[lu];
        if(!ans)cout<<"Fumeanu"<<'\n';
        else cout<<"Nargy"<<'\n';
    }
    return 0;
}