#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int>> mergeArrays(vector<pair<int,int>> a,vector<pair<int,int>> b)
{
vector<pair<int,int>> result;
int i=0;
int j=0;
int aSize = a.size();
int bSize = b.size();
int minA = INT_MAX;
int minB = INT_MAX;
int maxA = INT_MIN;
int maxB = INT_MIN;
for(int k=0;k<aSize;k++)
{
if(a[k].first < minA)
{
minA = a[k].first ;
}
if(a[k].first > maxA)
{
maxA = a[k].first ;
}
}
for(int k=0;k<bSize;k++)
{
if(b[k].first < minB)
{
minB = b[k].first ;
}
if(b[k].first > maxB)
{
maxB = b[k].first ;
}
}
if(maxA < minB)
{
for(auto ele : a)
{
result.push_back(ele);
}
for(auto ele : b)
{
result.push_back(ele);
}
return result;
}
if(maxB < minA)
{
for(auto ele : b)
{
result.push_back(ele);
}
for(auto ele : a)
{
result.push_back(ele);
}
return result;
}
while(i< aSize && j < bSize )
{
int aX = a[i].first;
int bX = b[j].first;
int aY = a[i].second;
int bY = b[j].second;
if(aX == bX)
{
result.push_back({aX,aY+bY});
i++;
j++;
}
if(aX < bX)
{
result.push_back({aX,aY+bY});
i++;
}
else if (aX > bX){
result.push_back({bX,aY+bY});
j++;
}
}
// lets say a is left
while(i < aSize)
{
result.push_back(a[i]);
i++;
}
while( j < bSize)
{
result.push_back(b[j]);
j++;
}
return result;
}
int main()
{
vector<pair<int,int>> a = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
vector<pair<int,int>> b= {{2, 3}, {6, 3}, {11, 2}};
vector<pair<int,int>> a1 = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
vector<pair<int,int>> b1= {};
vector<pair<int,int>> a2 = {{1, 3}, {3, 1}, {5, 3}, {6, 4}, {10, 1}};
vector<pair<int,int>> b2= {{13,2}};
vector<pair<int,int>> result = mergeArrays(a1,b1);
for(auto ele : result)
{
cout<<ele.first;
cout<<" ";
cout<<ele.second;
cout<<"||";
}
return 0;
}
/*
1 O(n)
2 O(n)
[(1, 3), (3, 1), (5, 3), (6, 4), (10, 1)] X
[(2, 3), (6, 3), (11, 2)] = Y
[(1, 6), (2, 4), (3, 4), (5, 6), (6, 7), (10, 3), (11, 2)]
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gbWVyZ2VBcnJheXModmVjdG9yPHBhaXI8aW50LGludD4+IGEsdmVjdG9yPHBhaXI8aW50LGludD4+IGIpCnsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiByZXN1bHQ7CiAgICBpbnQgaT0wOwogICAgaW50IGo9MDsKICAgIGludCBhU2l6ZSA9IGEuc2l6ZSgpOwogICAgaW50IGJTaXplID0gYi5zaXplKCk7CiAgICBpbnQgbWluQSA9IElOVF9NQVg7CiAgICBpbnQgbWluQiA9IElOVF9NQVg7CiAgICBpbnQgbWF4QSA9IElOVF9NSU47CiAgICBpbnQgbWF4QiA9IElOVF9NSU47CiAgICAKCiAgICBmb3IoaW50IGs9MDtrPGFTaXplO2srKykKICAgIHsKICAgICAgICBpZihhW2tdLmZpcnN0IDwgbWluQSkKICAgICAgICB7CiAgICAgICAgbWluQSA9IGFba10uZmlyc3QgOwogICAgICAgIH0KICAgICAgICBpZihhW2tdLmZpcnN0ICA+IG1heEEpCiAgICAgICAgewogICAgICAgICAgICBtYXhBID0gYVtrXS5maXJzdCA7CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBrPTA7azxiU2l6ZTtrKyspCiAgICB7CiAgICAgICAgaWYoYltrXS5maXJzdCAgPCBtaW5CKQogICAgICAgIHsKICAgICAgICBtaW5CID0gYltrXS5maXJzdCA7CiAgICAgICAgfQogICAgICAgIGlmKGJba10uZmlyc3QgID4gbWF4QikKICAgICAgICB7CiAgICAgICAgICAgIG1heEIgPSBiW2tdLmZpcnN0IDsKICAgICAgICB9CiAgICB9CiAgICBpZihtYXhBIDwgbWluQikKICAgIHsKICAgICAgICBmb3IoYXV0byBlbGUgOiBhKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhlbGUpOwogICAgICAgIH0KICAgICAgICBmb3IoYXV0byBlbGUgOiBiKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhlbGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgaWYobWF4QiA8IG1pbkEpCiAgICB7CiAgICAgICAgZm9yKGF1dG8gZWxlIDogYikKICAgICAgICB7CiAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soZWxlKTsKICAgICAgICB9CiAgICAgICAgZm9yKGF1dG8gZWxlIDogYSkKICAgICAgICB7CiAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soZWxlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIHdoaWxlKGk8IGFTaXplICYmIGogPCBiU2l6ZSApCiAgICB7CiAgICAgICAgaW50IGFYID0gYVtpXS5maXJzdDsKICAgICAgICBpbnQgYlggPSBiW2pdLmZpcnN0OwogICAgICAgIGludCBhWSA9IGFbaV0uc2Vjb25kOwogICAgICAgIGludCBiWSA9IGJbal0uc2Vjb25kOwogICAgICAgIAogICAgICAgIGlmKGFYID09IGJYKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayh7YVgsYVkrYll9KTsKICAgICAgICAgICAgaSsrOwogICAgICAgICAgICBqKys7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBpZihhWCA8IGJYKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayh7YVgsYVkrYll9KTsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChhWCA+IGJYKXsKICAgICAgICByZXN1bHQucHVzaF9iYWNrKHtiWCxhWStiWX0pOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgICAKICAgIH0KICAgIC8vIGxldHMgc2F5IGEgaXMgbGVmdAogICAgd2hpbGUoaSA8IGFTaXplKQogICAgewogICAgICAgIHJlc3VsdC5wdXNoX2JhY2soYVtpXSk7CiAgICAgICAgaSsrOwogICAgfQogICAgCiAgICB3aGlsZSggaiA8IGJTaXplKQogICAgewogICAgICAgIHJlc3VsdC5wdXNoX2JhY2soYltqXSk7CiAgICAgICAgaisrOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICAgIAp9CgoKCmludCAgbWFpbigpCnsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBhID0ge3sxLCAzfSwgezMsIDF9LCB7NSwgM30sIHs2LCA0fSwgezEwLCAxfX07CiAgICB2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYj0ge3syLCAzfSwgezYsIDN9LCB7MTEsIDJ9fTsKICAgIAogICAgdmVjdG9yPHBhaXI8aW50LGludD4+IGExID0ge3sxLCAzfSwgezMsIDF9LCB7NSwgM30sIHs2LCA0fSwgezEwLCAxfX07CiAgICB2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYjE9IHt9OwogICAgCiAgICB2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYTIgPSB7ezEsIDN9LCB7MywgMX0sIHs1LCAzfSwgezYsIDR9LCB7MTAsIDF9fTsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBiMj0ge3sxMywyfX07CiAgICAKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiByZXN1bHQgPSBtZXJnZUFycmF5cyhhMSxiMSk7CiAgICBmb3IoYXV0byBlbGUgOiByZXN1bHQpCiAgICB7CiAgICAgICAgY291dDw8ZWxlLmZpcnN0OwogICAgICAgIGNvdXQ8PCIgIjsKICAgICAgICBjb3V0PDxlbGUuc2Vjb25kOwogICAgICAgIGNvdXQ8PCJ8fCI7CiAgICAgICAgCiAgICB9CiAgICByZXR1cm4gMDsKICAgIAp9CgoKLyoKMSBPKG4pCjIgTyhuKQoKWygxLCAzKSwgKDMsIDEpLCAoNSwgMyksICg2LCA0KSwgKDEwLCAxKV0gWCAKWygyLCAzKSwgKDYsIDMpLCAoMTEsIDIpXSA9IFkKClsoMSwgNiksICgyLCA0KSwgKDMsIDQpLCAoNSwgNiksICg2LCA3KSwgKDEwLCAzKSwgKDExLCAyKV0KKi8K