using namespace std;
#include <iostream>
#include <vector>
// combine two sorted lists A and B into R
// displays comparison every time it is done
void combine(vector<int> A, vector<int> B, vector<int>& R)
{
int ia = 0;
int ib = 0;
int sA = A.size();
int sB = B.size();
while ((ia < sA) && (ib < sB)) {
if (A[ia] < B[ib]) {
R.push_back(A[ia]);
ia++;
}
else {
R.push_back(B[ib]);
ib++;
}
}
while(ia < sA)
{
R.push_back(A[ia++]);
}
while(ib < sB)
{
R.push_back(B[ib++]);
}
cout << "comparison" << endl;
// be careful -- R comes in as an empty vector
}
int main()
{
vector<int> L1;
vector<int> L2;
vector<int> L3;
int N; // how many elements in each of L1 and L2
int e; // for each element
cout << "How many elements in each list?" << endl;
cin >> N;
cout << "List1" << endl;
for (int i = 1; i <= N; i++)
{
cout << "element :"; cin >> e; L1.push_back(e);
}
cout << "List2" << endl;
for (int i = 1; i <= N; i++)
{
cout << "element :"; cin >> e; L2.push_back(e);
}
combine(L1, L2, L3);
cout << "The result is: ";
for (int i = 0; i < N * 2; i++)
{
cout << L3[i] << " | ";
} cout << endl;
}// end of main
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKLy8gY29tYmluZSB0d28gc29ydGVkIGxpc3RzIEEgYW5kIEIgaW50byBSCi8vIGRpc3BsYXlzIGNvbXBhcmlzb24gZXZlcnkgdGltZSBpdCBpcyBkb25lCnZvaWQgY29tYmluZSh2ZWN0b3I8aW50PiBBLCB2ZWN0b3I8aW50PiBCLCB2ZWN0b3I8aW50PiYgUikKewogICAgaW50IGlhID0gMDsKICAgIGludCBpYiA9IDA7CiAgICBpbnQgc0EgPSBBLnNpemUoKTsKICAgIGludCBzQiA9IEIuc2l6ZSgpOwoKICAgIHdoaWxlICgoaWEgPCBzQSkgJiYgKGliIDwgc0IpKSB7CiAgICAgICAgaWYgKEFbaWFdIDwgQltpYl0pIHsKICAgICAgICAgICAgUi5wdXNoX2JhY2soQVtpYV0pOwogICAgICAgICAgICBpYSsrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgUi5wdXNoX2JhY2soQltpYl0pOwogICAgICAgICAgICBpYisrOwogICAgICAgIH0KICAgIH0KICAgIHdoaWxlKGlhIDwgc0EpCiAgICB7CiAgICAJUi5wdXNoX2JhY2soQVtpYSsrXSk7CiAgICB9CiAgICB3aGlsZShpYiA8IHNCKQogICAgewogICAgCVIucHVzaF9iYWNrKEJbaWIrK10pOwogICAgfQogICAgY291dCA8PCAiY29tcGFyaXNvbiIgPDwgZW5kbDsKICAgIC8vIGJlIGNhcmVmdWwgLS0gUiBjb21lcyBpbiBhcyBhbiBlbXB0eSB2ZWN0b3IKfQoKaW50IG1haW4oKQp7CiAgICB2ZWN0b3I8aW50PiBMMTsKICAgIHZlY3RvcjxpbnQ+IEwyOwogICAgdmVjdG9yPGludD4gTDM7CiAgICBpbnQgTjsgIC8vIGhvdyBtYW55IGVsZW1lbnRzIGluIGVhY2ggb2YgTDEgYW5kIEwyCiAgICBpbnQgZTsgIC8vIGZvciBlYWNoIGVsZW1lbnQKCiAgICBjb3V0IDw8ICJIb3cgbWFueSBlbGVtZW50cyBpbiBlYWNoIGxpc3Q/IiA8PCBlbmRsOwogICAgY2luID4+IE47CgogICAgY291dCA8PCAiTGlzdDEiIDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAiZWxlbWVudCA6IjsgY2luID4+IGU7IEwxLnB1c2hfYmFjayhlKTsKICAgIH0KCiAgICBjb3V0IDw8ICJMaXN0MiIgPDwgZW5kbDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8ICJlbGVtZW50IDoiOyBjaW4gPj4gZTsgTDIucHVzaF9iYWNrKGUpOwogICAgfQoKICAgIGNvbWJpbmUoTDEsIEwyLCBMMyk7CgogICAgY291dCA8PCAiVGhlIHJlc3VsdCBpczogIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTiAqIDI7IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8IEwzW2ldIDw8ICIgfCAiOwogICAgfSBjb3V0IDw8IGVuZGw7Cgp9Ly8gZW5kIG9mIG1haW4=