Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
30541 masppy 【S】T3 C++ 运行出错 54 900 MS 339364 KB 1575 2024-07-19 16:49:03

Tests(6/11):


#include<bits/stdc++.h> #define ll long long using namespace std; const ll maxn=2e3+300; const ll maxm=(1<<20)-1; ll n,m,t,k,cnt=0,tot=0,root; ll belong[2000300],a[1000300],dfn[2000300],low[2000300]; stack<ll> stk; vector<ll> q[2000300],location[2000300],value[2000300]; inline void dfs(ll pos){ dfn[pos]=low[pos]=++tot; stk.push(pos); ll siz=q[pos].size(); for(ll i=0;i<siz;i++){ //cout<<pos<<" "<<i<<endl; ll v=q[pos][i]; if(!dfn[v]){ dfs(v); low[pos]=min(low[pos],low[v]); } else if(!belong[v]){ low[pos]=min(low[pos],dfn[v]); } } if(dfn[pos]==low[pos]){ cnt++; while(!stk.empty()){ ll y=stk.top(); stk.pop(); belong[y]=cnt; if(y==pos) return; } } } int main(){ //freopen("seq.in","r",stdin); // freopen("seq.out","w",stdout); scanf("%lld",&n); for(ll i=1;i<=n;i++){ scanf("%lld",&a[i]); } for(ll i=1;i<=maxm;i++){ for(ll j=0;j<20;j++){ if((i>>j)&1){ q[i].push_back(i^(1<<j)); } } } for(ll i=1;i<=n;i++){ q[i+maxm].push_back(a[i]^maxm); q[a[i]].push_back(i+maxm); } dfs(maxm); for(ll i=1;i<=n;i++){ location[belong[i+maxm]].push_back(i); value[belong[i+maxm]].push_back(a[i]); } for(ll i=1;i<=cnt;i++){ sort(location[i].begin(),location[i].end()); sort(value[i].begin(),value[i].end()); ll siz=location[i].size(); for(ll j=0;j<siz;j++){ a[location[i][j]]=value[i][j]; } } for(ll i=1;i<=n;i++) printf("%lld ",a[i]); //fclose(stdin); // fclose(stdout); return 0; }


测评信息: