A小的和B大的对应
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2 * 1e5 +10;
struct Node {
int val, id;
}a[maxn], b[maxn];
bool cmp1(const Node &x, const Node &y) {
return x.val < y.val;
}
bool cmp2(const Node &x, const Node &y) {
return x.id < y.id;
}
int main() {
int n; scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i].val);
a[i].id = i;
}
for (int i = 1; i <= n; i++) {
scanf("%d", &b[i].val);
b[i].id = i;
}
sort(a + 1, a + 1 + n, cmp1);
sort(b + 1, b + 1 + n, cmp1);
for (int i = 1; i <= n; i++) {
a[i].id = b[n - i + 1].id;
}
sort(a + 1, a + 1 + n, cmp2);
printf("%d", a[1].val);
for (int i = 2; i <= n; i++) {
printf(" %d", a[i].val);
}
printf("\n");
return 0;
}