Untitled
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