Advertisement
anant2961

Untitled

May 15th, 2024
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void pop_front(std::vector<int> &v)
  5. {
  6.     if (v.size() > 0) {
  7.         v.erase(v.begin());
  8.     }
  9. }
  10. vector<int> helper(vector<int> nums, int c_len)
  11. {
  12.     vector<int> ans;
  13.     int ln = nums.size();
  14.     for(int i=0;i<ln;i++)
  15.     {
  16.         while(ans.size()>0 && ans.back()<nums[i] && ((ln-i) > (c_len-ans.size())))
  17.         ans.pop_back();
  18.         if(ans.size()<c_len)
  19.         ans.push_back(nums[i]);
  20.     }
  21.     // Return the ans
  22.     return ans;
  23. }
  24.  
  25. vector<int> maxNumber(vector<int> nums1, vector<int> nums2,int k)
  26. {
  27.     int l1 = nums1.size();
  28.     int l2 = nums2.size();
  29.    
  30.     vector<int> rs;
  31.    
  32.     for(int s1=max(0, k-l2);s1<=min(k, l1);s1++)
  33.     {
  34.         vector<int> p1,p2;
  35.         p1 = helper(nums1, s1);
  36.         p2 = helper(nums2, k-s1);
  37.        
  38.         vector<int> temp;
  39.         for(int j=0;j<k;j++)
  40.         {
  41.             vector<int> temp2 = max(p1,p2);
  42.             int fr = temp2.front();
  43.             if(p1>p2)
  44.             pop_front(p1);
  45.             else
  46.             pop_front(p2);
  47.             temp.push_back(fr);
  48.         }
  49.        
  50.         rs = max(rs, temp);
  51.        
  52.     }
  53.     return rs;
  54. }
  55.  
  56.  
  57. // Driver Code
  58. int main()
  59. {
  60.     ios_base::sync_with_stdio(0);
  61.     cin.tie(0);
  62.     cout.tie(0);
  63.     int n;
  64.     cin>>n;
  65.     vector<int> v(n);
  66.     for(int &x:v){
  67.         cin>>x;
  68.     }
  69.     int m;
  70.     cin>>m;
  71.     vector<int> v1(m);
  72.     for(int &x : v1){
  73.         cin>>x;
  74.     }
  75.     int p;
  76.     cin>>p;
  77.     vector<int> res = maxNumber(v, v1, p);
  78.     for(int i=0;i<res.size();i++)
  79.     cout<<res[i]<<" ";
  80.     return 0;
  81. }
  82.  
  83.  
Tags: C++ C++20 c++14
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement