题解:AT_abc392_c [ABC392C] Bib
FlowerAccepted
·
·
题解
解题思路
仔细读题,我们发现需要记录穿着 $i$ 号号码布的人的编号 $A[MAXN]$。有点像存节点的父亲。我们在输入每个 $Q_i$($1 \le i \le n$)时令 $A_{Q_i} = i$ 即可。
再读题,对于每个人输出 $\large{Q_{P_{A_i}}}$ 即可。
## 代码呈现
```cpp
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[300005], p[300005], q[300005];
int main() {
ios::sync_with_stdio(0); // 数据规模到 ae5 (3 < a)就要关流同步了
int n;
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> p[i];
}
for (int i = 1; i <= n; i ++) {
cin >> q[i];
a[q[i]] = i; // 记录穿着 i 号号码布的人的编号
}
for (int i = 1; i <= n; i ++) {
cout << q[p[a[i]]] << ' '; // 输出答案
}
return 0;
}
```
## 复杂度分析
$O(n)$。不记录 $A$ 就会超时!