結果
| 問題 |
No.2732 Similar Permutations
|
| コンテスト | |
| ユーザー |
cled0328
|
| 提出日時 | 2024-04-19 23:08:37 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,551 bytes |
| コンパイル時間 | 2,343 ms |
| コンパイル使用メモリ | 201,980 KB |
| 最終ジャッジ日時 | 2025-02-21 05:24:03 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 88 WA * 13 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
vector<int> a(n);
int xr=0;
vector<pair<int,int>> b(300000,{-1,0});
for(int i=0;i<n;i++){
cin>>a[i];
xr^=a[i]+i+1;
}
if(n<750){
vector<int> p(n);
for(int i=0;i<n;i++)p[i]=i;
vector<vector<int>> st(300000);
do{
int x=0;
for(int i=0;i<n;i++)x^=a[i]+p[i]+1;
if(st[x].size()==0)st[x]=p;
else{
for(int i=0;i<n;i++)cout<<st[x][i]+1<<" \n"[i+1==n];
for(int i=0;i<n;i++)cout<<p[i]+1<<" \n"[i+1==n];
return 0;
}
}while(next_permutation(p.begin(),p.end()));
cout<<-1<<"\n";
return 0;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
int k=xr^(a[i]+i+1)^(a[j]+j+1)^(a[j]+i+1)^(a[i]+j+1);
if(b[k].first==-1){
b[k]={i,j};
continue;
}else{
for(int ii=0;ii<n;ii++){
if(ii==b[k].first)cout<<b[k].second+1;
else if(ii==b[k].second)cout<<b[k].first+1;
else cout<<ii+1;
cout<<" \n"[ii+1==n];
}
for(int ii=0;ii<n;ii++){
if(ii==i)cout<<j+1;
else if(ii==j)cout<<i+1;
else cout<<ii+1;
cout<<" \n"[ii+1==n];
}
return 0;
}
}
}
cout<<-1<<"\n";
}
cled0328