QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#219914 | #5199. Amazing Trick | suibian_xiaozhao | WA | 1ms | 3604kb | C++20 | 2.2kb | 2023-10-19 19:46:40 | 2023-10-19 19:46:40 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using ll = long long;
#define int ll
#define endl "\n"
#define no cout << "NO" << endl
#define yes cout << "YES" << endl
#define pii pair<int,int>
#define ary(i) array<ll,(i)>
#define all(x) x.begin(),x.end()
const int maxn=2e5+7;
const int inf=numeric_limits<int>::max();
const int inf2=0x3f3f3f3f3f3f3f3;
const int inff=numeric_limits<int>::min();
const int mod=998244353;
const int limit =310;
const int maxsize =limit*limit;
int f[limit][maxsize+limit]={0};
int a[limit]={0};
void solve(){
int n;
cin>>n;
vector<int> a(n+3,0);
vector<bool> vis(n+3,false);
for(int i=1;i<=n;i++){
cin>>a[i];
}
vector<int> cy;
auto dfs=[&](auto dfs,int x){
if(vis[x]) return;
vis[x]=true;
cy.push_back(x);
dfs(dfs,a[x]);
};
vector<vector<int>> _v2;
vector<int> P;
for(int i=1;i<=n;i++){
if(vis[i])continue;
cy.clear();
dfs(dfs,i);
if(cy.size()==2){
_v2.push_back(cy);
}else{
for(auto x:cy){
P.push_back(x);
}
}
}
if(_v2.size()>=2){
for(auto & i : _v2){
P.push_back(i[0]);
}
for(auto & i : _v2){
P.push_back(i[1]);
}
} else if(_v2.size()==1){
if(n<4) {
cout << "Impossible" << endl;
return;
}
else {
auto it =P.begin();
it++;
P.insert(it,_v2[0][0]);
P.push_back(_v2[0][1]);
}
}
cout << "Possible" << endl;
vector<int> p(n+3),q(n+3),b(n+3);
for(int i=0;i<n;i++){
p[P[i]]=P[(i+1)%n];
}
for(int i=1;i<=n;i++)
b[i]=a[p[i]];
for(int i=1;i<=n;i++)
q[b[i]]=i;
for(int i=1;i<=n;i++)
cout<<p[i]<<" ";
cout<<endl;
for(int i=1;i<=n;i++)
cout<<q[i]<<" ";
cout<<endl;
}
#undef int
int main()
{
IOS
int n;
cin>>n;
// n=1;
while(n--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3604kb
input:
4 2 2 1 3 1 2 3 4 2 1 4 3 5 5 1 4 2 3
output:
Impossible Possible 2 3 1 3 1 2 Possible 3 4 2 1 3 4 2 1 Possible 5 1 4 2 3 4 3 1 5 2
result:
ok 3/4 are 'Possible' (4 test cases)
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3604kb
input:
50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
output:
Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 Possible 1 1 ...
result:
wrong answer Permutation has fixed point: 1 (test case 1)