fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<pair<int,int>> mergeArrays(vector<pair<int,int>> a,vector<pair<int,int>> b)
  5. {
  6. vector<pair<int,int>> result;
  7. int i=0;
  8. int j=0;
  9. int aSize = a.size();
  10. int bSize = b.size();
  11. int minA = INT_MAX;
  12. int minB = INT_MAX;
  13. int maxA = INT_MIN;
  14. int maxB = INT_MIN;
  15.  
  16.  
  17. for(int k=0;k<aSize;k++)
  18. {
  19. if(a[k].first < minA)
  20. {
  21. minA = a[k].first ;
  22. }
  23. if(a[k].first > maxA)
  24. {
  25. maxA = a[k].first ;
  26. }
  27. }
  28. for(int k=0;k<bSize;k++)
  29. {
  30. if(b[k].first < minB)
  31. {
  32. minB = b[k].first ;
  33. }
  34. if(b[k].first > maxB)
  35. {
  36. maxB = b[k].first ;
  37. }
  38. }
  39. if(maxA < minB)
  40. {
  41. for(auto ele : a)
  42. {
  43. result.push_back(ele);
  44. }
  45. for(auto ele : b)
  46. {
  47. result.push_back(ele);
  48. }
  49. return result;
  50. }
  51. if(maxB < minA)
  52. {
  53. for(auto ele : b)
  54. {
  55. result.push_back(ele);
  56. }
  57. for(auto ele : a)
  58. {
  59. result.push_back(ele);
  60. }
  61. return result;
  62. }
  63. while(i< aSize && j < bSize )
  64. {
  65. int aX = a[i].first;
  66. int bX = b[j].first;
  67. int aY = a[i].second;
  68. int bY = b[j].second;
  69.  
  70. if(aX == bX)
  71. {
  72. result.push_back({aX,aY+bY});
  73. i++;
  74. j++;
  75.  
  76. }
  77. if(aX < bX)
  78. {
  79. result.push_back({aX,aY+bY});
  80. i++;
  81. }
  82. else if (aX > bX){
  83. result.push_back({bX,aY+bY});
  84. j++;
  85. }
  86.  
  87. }
  88. // lets say a is left
  89. while(i < aSize)
  90. {
  91. result.push_back(a[i]);
  92. i++;
  93. }
  94.  
  95. while( j < bSize)
  96. {
  97. result.push_back(b[j]);
  98. j++;
  99. }
  100. return result;
  101.  
  102. }
  103.  
  104.  
  105.  
  106. int main()
  107. {
  108. vector<pair<int,int>> a = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
  109. vector<pair<int,int>> b= {{2, 3}, {6, 3}, {11, 2}};
  110.  
  111. vector<pair<int,int>> a1 = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
  112. vector<pair<int,int>> b1= {};
  113.  
  114. vector<pair<int,int>> a2 = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
  115. vector<pair<int,int>> b2= {{13,2}};
  116.  
  117. vector<pair<int,int>> result = mergeArrays(a1,b1);
  118. for(auto ele : result)
  119. {
  120. cout<<ele.first;
  121. cout<<" ";
  122. cout<<ele.second;
  123. cout<<"||";
  124.  
  125. }
  126. return 0;
  127.  
  128. }
  129.  
  130.  
  131. /*
  132. 1 O(n)
  133. 2 O(n)
  134.  
  135. [(1, 3), (3, 1), (5, 3), (6, 4), (10, 1)] X
  136. [(2, 3), (6, 3), (11, 2)] = Y
  137.  
  138. [(1, 6), (2, 4), (3, 4), (5, 6), (6, 7), (10, 3), (11, 2)]
  139. */
  140.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
1 3||3 1||5 3||6 4||10 1||