diff --git a/Heaps-and-Maps/nMaxPairCombinations.cpp b/Heaps-and-Maps/nMaxPairCombinations.cpp new file mode 100644 index 0000000..875a767 --- /dev/null +++ b/Heaps-and-Maps/nMaxPairCombinations.cpp @@ -0,0 +1,31 @@ +vector Solution::solve(vector &A, vector &B) { + int i,n=A.size(),j,x; + sort(A.begin(),A.end()); + sort(B.begin(),B.end()); + vectorans; + priority_queue>>q; + set>s; + q.push(make_pair(A[n-1]+B[n-1],make_pair(n-1,n-1))); + s.insert(make_pair(n-1,n-1)); + int cnt=0; + while(!q.empty()){ + if(cnt==n){ + break; + } + pair>p=q.top(); + ans.push_back(p.first); + i=p.second.first; + j=p.second.second; + if(s.find(make_pair(i-1,j))==s.end()){ + q.push(make_pair(A[i-1]+B[j],make_pair(i-1,j))); + s.insert(make_pair(i-1,j)); + } + if(s.find(make_pair(i,j-1))==s.end()){ + q.push(make_pair(A[i]+B[j-1],make_pair(i,j-1))); + s.insert(make_pair(i,j-1)); + } + q.pop(); + cnt++; + } + return ans; +}