Untitled

 avatar
unknown
plain_text
7 months ago
4.2 kB
43
Indexable
if(n>=21 && n<40)
    {
        for(int k=0; k<50; k++)
        {
            unordered_map<int,vector<int>> mp;
            shuffle(vec.begin(),vec.end(),rnd);
            for(int msk=1; msk<(1<<18); msk++)
            {
                int sum=0;
                int st=0;
                for(int i=0; i<18; i++)
                {
                    if(msk&(1<<i))
                    {
                        sum+=vec[i].F;
                        st|=(1ll<<vec[i].S);
                        if(sum>=mod)sum-=mod;
                    }
                }
                mp[sum].push_back(st);
            }
            if(!mp[0].empty())
            {
                cout << "alhamdolellah\n";
                vector<int> ans(n);
                for(int i=0; i<n; i++)
                {
                    if(mp[0][0]&(1<<i))
                        ans[i]=1;
                }
                for(auto num:ans)cout<<num<<" ";
                return 0;
            }
            for(auto [sm,ve]:mp)
            {
                for(int i=0; i<ve.size(); i++)
                {

                    for(int j=i+1; j<ve.size(); j++)
                    {
                        int x=ve[i];
                        int y=ve[j];
                        if(x==y)continue;
                        int comm=x&y;
                        x=x^comm;
                        y=y^comm;
                        cout << "alhamdolellah\n";
                        vector<int> ans(n);
                        for(int z=0; z<n; z++)
                        {
                            if(x&(1ll<<z))
                            {
                                ans[z]=1;
                            }
                        }
                        for(int z=0; z<n; z++)
                        {
                            if(y&(1ll<<z))
                            {
                                ans[z]=2;
                            }
                        }
                        for(auto num:ans)cout<<num<<" ";
                        return 0;

                    }
                }
            }
            //-----------------------------------------
            shuffle(vec.begin(),vec.end(),rnd);
            shuffle(vec.begin(),vec.end(),rnd);
            for(int msk=1; msk<(1<<18); msk++)
            {
                int sum=0;
                int st=0;
                for(int i=0; i<18; i++)
                {
                    if(msk&(1<<i))
                    {
                        sum+=vec[i].F;
                        st|=(1ll<<vec[i].S);
                        if(sum>=mod)sum-=mod;
                    }
                }
                if(sum==0)
                {
                    cout << "alhamdolellah\n";
                    vector<int> ans(n);
                    for(int i=0; i<n; i++)
                    {
                        if(st&(1<<i))
                            ans[i]=1;
                    }
                    for(auto num:ans)cout<<num<<" ";
                    return 0;
                }
                if(mp.find(sum)!=mp.end())
                {
                    for(int j=0; j<mp[sum].size(); j++)
                    {
                        int x=st;
                        int y=mp[sum][j];
                        if(x==y)continue;
                        int comm=x&y;
                        x=x^comm;
                        y=y^comm;
                        cout << "alhamdolellah\n";
                        vector<int> ans(n);
                        for(int z=0; z<n; z++)
                        {
                            if(x&(1ll<<z))
                                ans[z]=1;
                        }
                        for(int z=0; z<n; z++)
                        {
                            if(y&(1ll<<z))
                                ans[z]=2;
                        }
                        for(auto num:ans)cout<<num<<" ";
                        return 0;
                    }
                }
            }
            cout<<"laelahaellallah\n";
        }
    }
Editor is loading...
Leave a Comment