class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
map<int,int> mp;
vector<int> ans(nums1.size(),0);
priority_queue<int,vector<int>,greater<int>> pq;
for(int i=0;i<nums2.size();i++){
mp[nums2[i]] = -1;
pq.push(nums2[i]);
if(pq.size() == 0) continue;
while(!pq.empty()){
if(nums2[i] > pq.top()){
mp[pq.top()] = nums2[i];
pq.pop();
}else break;
}
}
for(int i=0;i<nums1.size();i++) ans[i] = mp[nums1[i]];
return ans;
}
};