#include <iostream>
using namespace std;
void sort(int * a, size_t n)
{
for(bool chg = true; chg; )
{
chg = false;
for(size_t i = 0; i < n-1; ++i)
if (a[i] > a[i+1])
{
chg = true;
int t = a[i]; a[i] = a[i+1]; a[i+1] = t;
}
}
}
int main(int argc, const char * argv[])
{
size_t sizeA, sizeB;
cout << "Size of first array: ";
cin >> sizeA;
cout << "Size of second array: ";
cin >> sizeB;
int *arrA = new int[sizeA];
int *arrB = new int[sizeB];
cout << "\n\nFirst array: ";
for (size_t i = 0; i < sizeA; i++)
{
arrA[i] = rand() % 9 + 1;
cout << arrA[i] << " ";
}
cout << "\n\nSecond array: ";
for (size_t i = 0; i < sizeB; i++)
{
arrB[i] = rand() % 9 + 1;
cout << arrB[i] << " ";
}
sort(arrA, sizeA);
sort(arrB, sizeB);
int *arrC = new int[sizeA < sizeB ? sizeA : sizeB];
size_t sizeC = 0;
for(size_t a = 0, b = 0; a < sizeA && b < sizeB; )
{
if (arrA[a] < arrB[b]) ++a;
else if (arrA[a] > arrB[b]) ++b;
else
{
arrC[sizeC++] = arrA[a];
a++; b++;
}
}
cout << "\n\nResult array: ";
for (size_t i = 0; i < sizeC; i++)
{
cout << arrC[i] << " ";
}
cout << endl;
delete arrA;
delete arrB;
delete arrC;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgc29ydChpbnQgKiBhLCBzaXplX3QgbikKewogICAgZm9yKGJvb2wgY2hnID0gdHJ1ZTsgY2hnOyApCiAgICB7CiAgICAgICAgY2hnID0gZmFsc2U7CiAgICAgICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IG4tMTsgKytpKQogICAgICAgICAgICBpZiAoYVtpXSA+IGFbaSsxXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2hnID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGludCB0ID0gYVtpXTsgYVtpXSA9IGFbaSsxXTsgYVtpKzFdID0gdDsKICAgICAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgc2l6ZV90IHNpemVBLCBzaXplQjsKICAgIGNvdXQgPDwgIlNpemUgb2YgZmlyc3QgYXJyYXk6ICI7CiAgICBjaW4gPj4gc2l6ZUE7CiAgICBjb3V0IDw8ICJTaXplIG9mIHNlY29uZCBhcnJheTogIjsKICAgIGNpbiA+PiBzaXplQjsKCiAgICBpbnQgKmFyckEgPSBuZXcgaW50W3NpemVBXTsKICAgIGludCAqYXJyQiA9IG5ldyBpbnRbc2l6ZUJdOwoKICAgIGNvdXQgPDwgIlxuXG5GaXJzdCBhcnJheTogIjsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZUE7IGkrKykKICAgIHsKICAgICAgICBhcnJBW2ldID0gcmFuZCgpICUgOSArIDE7CiAgICAgICAgY291dCA8PCBhcnJBW2ldIDw8ICIgIjsKICAgIH0KCiAgICBjb3V0IDw8ICJcblxuU2Vjb25kIGFycmF5OiAiOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplQjsgaSsrKQogICAgewogICAgICAgIGFyckJbaV0gPSByYW5kKCkgJSA5ICsgMTsKICAgICAgICBjb3V0IDw8IGFyckJbaV0gPDwgIiAiOwogICAgfQoKICAgIHNvcnQoYXJyQSwgc2l6ZUEpOwogICAgc29ydChhcnJCLCBzaXplQik7CgogICAgaW50ICphcnJDID0gbmV3IGludFtzaXplQSA8IHNpemVCID8gc2l6ZUEgOiBzaXplQl07CiAgICBzaXplX3Qgc2l6ZUMgPSAwOwoKICAgIGZvcihzaXplX3QgYSA9IDAsIGIgPSAwOyBhIDwgc2l6ZUEgJiYgYiA8IHNpemVCOyApCiAgICB7CiAgICAgICAgaWYgKGFyckFbYV0gPCBhcnJCW2JdKSArK2E7CiAgICAgICAgZWxzZSBpZiAoYXJyQVthXSA+IGFyckJbYl0pICsrYjsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBhcnJDW3NpemVDKytdID0gYXJyQVthXTsKICAgICAgICAgICAgYSsrOyBiKys7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgIlxuXG5SZXN1bHQgYXJyYXk6ICI7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVDOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCBhcnJDW2ldIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKCiAgICBkZWxldGUgYXJyQTsKICAgIGRlbGV0ZSBhcnJCOwogICAgZGVsZXRlIGFyckM7Cn0K