Advertisement
imashutosh51

K Max Sum Combinations

Aug 5th, 2022
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. vector<int> kMaxSumCombination(vector<int> &a, vector<int> &b, int n, int k){
  3.     priority_queue<pair<int,pair<int,int>>> q;
  4.     sort(a.begin(),a.end());
  5.     sort(b.begin(),b.end());
  6.     q.push(make_pair(a[n-1]+b[n-1],make_pair(n-1,n-1)));
  7.     map<pair<int,int>,bool> mp;
  8.     mp[make_pair(a[n-1],b[n-1])]=true;
  9.     vector <int> res;
  10.     for(int l=0;l<k;l++){
  11.         pair<int,pair<int,int>> temp=q.top();
  12.         q.pop();
  13.         res.push_back(temp.first);
  14.         int i=temp.second.first;
  15.         int j=temp.second.second;
  16.         pair<int,int> check=make_pair(i-1,j);
  17.        
  18.         if(i>=0 && !mp[check]){
  19.             q.push(make_pair(a[i-1]+b[j],make_pair(i-1,j)));
  20.             mp[make_pair(i-1,j)]=true;
  21.         }
  22.         check.first=i;
  23.         check.second=j-1;
  24.         if(j>=0 && !mp[check]){
  25.             q.push(make_pair(a[i]+b[j-1],make_pair(i,j-1)));
  26.             mp[make_pair(i,j-1)]=true;
  27.         }
  28.     }
  29.     return res;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement