Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- vector<int> kMaxSumCombination(vector<int> &a, vector<int> &b, int n, int k){
- priority_queue<pair<int,pair<int,int>>> q;
- sort(a.begin(),a.end());
- sort(b.begin(),b.end());
- q.push(make_pair(a[n-1]+b[n-1],make_pair(n-1,n-1)));
- map<pair<int,int>,bool> mp;
- mp[make_pair(a[n-1],b[n-1])]=true;
- vector <int> res;
- for(int l=0;l<k;l++){
- pair<int,pair<int,int>> temp=q.top();
- q.pop();
- res.push_back(temp.first);
- int i=temp.second.first;
- int j=temp.second.second;
- pair<int,int> check=make_pair(i-1,j);
- if(i>=0 && !mp[check]){
- q.push(make_pair(a[i-1]+b[j],make_pair(i-1,j)));
- mp[make_pair(i-1,j)]=true;
- }
- check.first=i;
- check.second=j-1;
- if(j>=0 && !mp[check]){
- q.push(make_pair(a[i]+b[j-1],make_pair(i,j-1)));
- mp[make_pair(i,j-1)]=true;
- }
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement