题解:AT_abc392_c [ABC392C] Bib

· · 题解

我们可以用结构体记录每个人看向的人的编号和每个人自己的编号,然后把原每个人自己的编号按原来的顺序记录下来,最后排序输出每个人看向的人即可。(注意是要按原顺序输出,所以把原每个人自己的编号按原来的顺序记录下来的数组在这里起到了必不可少的作用。)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6+5;
int x[maxn];
struct node
{
    int p,q;
}a[maxn];
bool cmp(node x,node y)
{
    return x.q<y.q;
}
signed main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].p;
    for(int i=1;i<=n;i++) cin>>a[i].q,x[i]=a[i].q;
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++) cout<<x[a[i].p]<<" ";
    cout<<endl;
    return 0;
}