結果
問題 |
No.2732 Similar Permutations
|
ユーザー |
![]() |
提出日時 | 2024-04-19 23:18:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,552 bytes |
コンパイル時間 | 2,179 ms |
コンパイル使用メモリ | 201,828 KB |
最終ジャッジ日時 | 2025-02-21 05:34:16 |
ジャッジサーバー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<1500){ 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"; }