What is the problem in this code?

include <bits/stdc++.h>
define Mxv 100010
define inf 1000000000
define linf 1000000000000000000
define fi first
define se second
define ll long long
// define u unsigned
define null NULL
define pb push_back
define ob pop_back
define scan(arr,n) for(int i=0;i<n;i++) cin>>arr[i]
define print(arr,n) for(int i=0;i<n;i++) cout<<arr[i]<<" "
define printR(arr,n) for(int i=n-1;i>=0;i–) cout<<arr[i]<<" "
define len size()
define mins(a,b) a = min(a,b)
define maxs(a,b) a = max(a,b)
define TLE ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int mod = 1e9+7;

int main(){
TLE;
int t,google=1;cin>>t;
while(t–){
int n;cin>>n;
int A[n];scan(A,n);
int colorA[n];scan(colorA,n);
int B[n];scan(B,n);
int colorB[n];scan(colorB,n);

	vector<bool> isPresent(2*n+10,false);
	for(int i=0;i<n;i++) isPresent[colorB[i]] = true;

	map<int,multiset<int>> mp;
	for(int i=0;i<n;i++){
		mp[colorA[i]].insert(A[i]);
		mp[colorB[i]].insert(B[i]);
	}

	for(int i=0;i<n;i++){
		if(!isPresent[colorA[i]]) continue;
		auto it = mp[colorA[i]].begin();
		A[i] = *it;
		mp[colorA[i]].erase(it);
	}

	bool flag = true;
	for(int i=1;i<n;i++)
		if(A[i] < A[i-1]) flag = false;
	cout<<(flag? "Yes":"No")<<"\n";
}

}

problem statement:-

You need to select the smallest value greater than or equal to A[i-1] from mp[colorA[i]].