#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> list_1 = {1, 2, 4, 4, 6, 9};
list<int> list_2 = {1, 0, 4, 4, 7, 8};
list_1.unique(); // O(n)
list_2.unique(); // O(n)
list_1.splice(list_1.begin(), list_2, list_2.begin(), list_2.end()); // O(n)
cout << "lists after join\n";
for (int &i : list_1)
cout << i << ' ';
size_t before = list_1.size();
list_1.sort(); // O(n * log2(n))
list_1.unique(); // O(n)
size_t after = list_1.size();
cout << "\nlists after removing identical elements\n";
for (int &i : list_1)
cout << i << ' ';
cout << "\nthere is " << before - after << " identical elements\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJbGlzdDxpbnQ+IGxpc3RfMSA9IHsxLCAyLCA0LCA0LCA2LCA5fTsKCWxpc3Q8aW50PiBsaXN0XzIgPSB7MSwgMCwgNCwgNCwgNywgOH07CglsaXN0XzEudW5pcXVlKCk7IC8vIE8obikKCWxpc3RfMi51bmlxdWUoKTsgLy8gTyhuKQoJCglsaXN0XzEuc3BsaWNlKGxpc3RfMS5iZWdpbigpLCBsaXN0XzIsIGxpc3RfMi5iZWdpbigpLCBsaXN0XzIuZW5kKCkpOyAvLyBPKG4pCgkKCWNvdXQgPDwgImxpc3RzIGFmdGVyIGpvaW5cbiI7Cglmb3IgKGludCAmaSA6IGxpc3RfMSkKCQljb3V0IDw8IGkgPDwgJyAnOwoJCglzaXplX3QgYmVmb3JlID0gbGlzdF8xLnNpemUoKTsKCWxpc3RfMS5zb3J0KCk7IC8vIE8obiAqIGxvZzIobikpCglsaXN0XzEudW5pcXVlKCk7IC8vIE8obikKCXNpemVfdCBhZnRlciA9IGxpc3RfMS5zaXplKCk7CgkKCWNvdXQgPDwgIlxubGlzdHMgYWZ0ZXIgcmVtb3ZpbmcgaWRlbnRpY2FsIGVsZW1lbnRzXG4iOwoJZm9yIChpbnQgJmkgOiBsaXN0XzEpCgkJY291dCA8PCBpIDw8ICcgJzsKCQoJY291dCA8PCAiXG50aGVyZSBpcyAiIDw8IGJlZm9yZSAtIGFmdGVyIDw8ICIgaWRlbnRpY2FsIGVsZW1lbnRzXG4iOyAKCQoJcmV0dXJuIDA7Cn0=