From d06144ff8db0f1583a96bf5dcbe6e151a995a31a Mon Sep 17 00:00:00 2001 From: Aakarsh Verma Date: Thu, 17 Oct 2019 22:36:12 +0530 Subject: [PATCH] nMaxPairCombinations.cpp --- Heaps-and-Maps/nMaxPairCombinations.cpp | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Heaps-and-Maps/nMaxPairCombinations.cpp 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; +}