Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
30451 | yuanjiabao | 【S】T3 | C++ | 运行超时 | 45 | 1000 MS | 31544 KB | 813 | 2024-07-19 15:44:44 |
#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N=1000100; int n,a[N],dsu[N]; vector<int>blk[N]; int p[N]; int find(int x){return dsu[x]==x?x:dsu[x]=find(dsu[x]);} void init(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)dsu[i]=i; } int main(){ // freopen("seq.in","r",stdin); // freopen("seq.out","w",stdout); init(); for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++)if(!(a[i]&a[j])){ dsu[find(i)]=find(j); } } for(int i=1;i<=n;i++)blk[find(i)].emplace_back(a[i]); for(int i=1;i<=n;i++) for(int i=1;i<=n;i++)sort(blk[i].begin(),blk[i].end()); for(int i=1;i<=n;i++)a[i]=blk[find(i)][p[find(i)]++]; for(int i=1;i<=n;i++)cout<<a[i]<<' '; return 0; }