結果
| 問題 |
No.2732 Similar Permutations
|
| コンテスト | |
| ユーザー |
hint908
|
| 提出日時 | 2024-04-19 22:44:01 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,113 bytes |
| コンパイル時間 | 2,265 ms |
| コンパイル使用メモリ | 200,272 KB |
| 最終ジャッジ日時 | 2025-02-21 04:57:13 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 6 WA * 60 RE * 35 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;
template<class T> using V = vector<T>;
template<class T> using VV = V<V<T>>;
template<class T> using VVV = V<VV<T>>;
template<class T> using VVVV = VV<VV<T>>;
#define rep(i,n) for(ll i=0ll;i<n;i++)
#define REP(i,a,n) for(ll i=a;i<n;i++)
const long long INF = (1LL << 60);
const long long mod99 = 998244353;
const long long mod107 = 1000000007;
const long long mod = mod99;
#define eb emplace_back
#define pb eb
#define be(v) (v).begin(),(v).end()
#define all(i,v) for(auto& i : v)
#define all2(i,j,v) for(auto& [i,j] : v)
template<class T, class U> void chmin(T& t, const U& u) { if (t > u) t = u; }
template<class T, class U> void chmax(T& t, const U& u) { if (t < u) t = u; }
// cin.tie(nullptr);
// ios::sync_with_stdio(false);
// cout << fixed << setprecision(20);
ll Rnd(ll L=0, ll R=mod99){
return rand()%(R-L)+L;
}
void solve(){
ll n;
cin >> n;
V<ll> v(n);
rep(i,n) cin >> v[i];
VV<ll> pos(200100);
rep(i, n) pos[v[i]].eb(i);
rep(i, 200100) if(pos[i].size()>=2){
V<ll> ans(n);
cout << "Yes" << endl;
rep(i, n){
cout << i+1 << " ";
ans[i] = i+1;
}
cout << endl;
swap(ans[pos[i][0]],ans[pos[i][1]]);
all(i,ans) cout << i << " ";
cout << endl;
return;
}
VV<ll> vv(300000);
rep(i, n){
ll x = 0, y = 0;;
rep(j, 20) if(((v[i]>>j)&1)==0){
if(x){
y += (1<<j);
break;
}
x += (1<<j);
}
vv[x+y].eb(i);
if(vv[x+y].size()<2) continue;
if(y>=n+1) continue;
V<ll> ans(n, -1);
ans[vv[x+y][0]] = x;
ans[vv[x+y][1]] = y;
ll cnt = 1;
rep(i, n) if(ans[i] == -1){
ans[i] = cnt;
cnt++;
while(cnt == x || cnt==y) cnt++;
}
rep(i, n) cout << ans[i] << " ";
cout << endl;
swap(ans[vv[x][0]], ans[vv[x][1]]);
rep(i, n) cout << ans[i] << " ";
cout << endl;
return;
}
cout << -1 << endl;
}
int main(){
cin.tie(nullptr);
ios::sync_with_stdio(false);
int t=1;
// cin >> t;
rep(i,t) solve();
}
hint908