n = int(input())
a = [int(i) for i in input().split()]
b = [int(i) for i in input().split()]
d = dict()
for j in range(n):
if b[j] not in d:
d[b[j]] = []
d[b[j]].append(j)
a1 = sorted(a)[::-1]
b = sorted(b)
for i in range(n):
ind = d[b[i]].pop()
a[ind] = a1[i]
print(*a)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool cmp(pair<int,int> p1,pair<int,int> p2){
return p1.second<p2.second;
}
bool rcmp(pair<int,int> p1,pair<int,int> p2){
return p1.second<p2.second;
}
int main(){
ll n;
cin>>n;
vector<int> v_a;
vector<pair<int,int>> v_b;
for(ll i=0;i<n;i++){
ll x;
cin>>x;
v_a.push_back(x);
}
for(ll i=0;i<n;i++){
ll y;
cin>>y;
v_b.push_back(make_pair(i,y));
}
sort(v_a.begin(),v_a.end(),greater<int>());
sort(v_b.begin(),v_b.end(),cmp);
ll x[n];
for(ll i=0;i<n;i++){
x[v_b[i].first]=v_a[i];
}
for(ll i=0;i<n;i++){
cout<<x[i]<<" ";
}
}
1245C - Constanze's Machine | 1005A - Tanya and Stairways |
1663F - In Every Generation | 1108B - Divisors of Two Integers |
1175A - From Hero to Zero | 1141A - Game 23 |
1401B - Ternary Sequence | 598A - Tricky Sum |
519A - A and B and Chess | 725B - Food on the Plane |
154B - Colliders | 127B - Canvas Frames |
107B - Basketball Team | 245A - System Administrator |
698A - Vacations | 1216B - Shooting |
368B - Sereja and Suffixes | 1665C - Tree Infection |
1665D - GCD Guess | 29A - Spit Problem |
1097B - Petr and a Combination Lock | 92A - Chips |
1665B - Array Cloning Technique | 1665A - GCD vs LCM |
118D - Caesar's Legions | 1598A - Computer Game |
1605A - AM Deviation | 1461A - String Generation |
1585B - Array Eversion | 1661C - Water the Trees |