#include <list>
#include <iostream>
using namespace std;
// Function to find the intersection of two sorted lists
std::list<int> intersection(const std::list<int>& l1, const std::list<int>& l2) {
std::list<int> result; // Stores the common elements
auto it1 = l1.begin(); // Iterator for l1
auto it2 = l2.begin(); // Iterator for l2
// Traverse both lists using iterators
while (it1 != l1.end() && it2 != l2.end()) {
if (*it1 < *it2) {
++it1; // Move iterator of l1 forward
} else if (*it2 < *it1) {
++it2; // Move iterator of l2 forward
} else {
// Both elements are equal, add to result
result.push_back(*it1);
++it1;
++it2;
}
}
return result; // Return the intersection list
}
// Function to print a list
void printList(const std::list<int>& lst) {
std::cout << "{ ";
for (int num : lst) {
std::cout << num << " ";
}
std::cout << "}" << std::endl;
}
// Main function
int main() {
// Test Case 1: {1, 2, 3, 4} ∩ {2, 3} = {2, 3}
std::list<int> l1 = {1, 2, 3, 4};
std::list<int> l2 = {2, 3};
std::list<int> result1 = intersection(l1, l2);
std::cout << "Test Case 1: Intersection: ";
printList(result1); // Expected Output: {2, 3}
// Test Case 2: {2, 9, 14} ∩ {1, 7, 15} = {}
std::list<int> l3 = {2, 9, 14};
std::list<int> l4 = {1, 7, 15};
std::list<int> result2 = intersection(l3, l4);
std::cout << "Test Case 2: Intersection: ";
printList(result2); // Expected Output: {}
// Test Case 3: Empty list ∩ {2, 3} = {}
std::list<int> l5; // Empty list
std::list<int> l6 = {2, 3};
std::list<int> result3 = intersection(l5, l6);
std::cout << "Test Case 3 (Empty l1): Intersection: ";
printList(result3); // Expected Output: {}
return 0;
}
I2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmN0aW9uIHRvIGZpbmQgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc29ydGVkIGxpc3RzCnN0ZDo6bGlzdDxpbnQ+IGludGVyc2VjdGlvbihjb25zdCBzdGQ6Omxpc3Q8aW50PiYgbDEsIGNvbnN0IHN0ZDo6bGlzdDxpbnQ+JiBsMikgewogICAgc3RkOjpsaXN0PGludD4gcmVzdWx0OyAvLyBTdG9yZXMgdGhlIGNvbW1vbiBlbGVtZW50cwogICAgYXV0byBpdDEgPSBsMS5iZWdpbigpOyAvLyBJdGVyYXRvciBmb3IgbDEKICAgIGF1dG8gaXQyID0gbDIuYmVnaW4oKTsgLy8gSXRlcmF0b3IgZm9yIGwyCgogICAgLy8gVHJhdmVyc2UgYm90aCBsaXN0cyB1c2luZyBpdGVyYXRvcnMKICAgIHdoaWxlIChpdDEgIT0gbDEuZW5kKCkgJiYgaXQyICE9IGwyLmVuZCgpKSB7CiAgICAgICAgaWYgKCppdDEgPCAqaXQyKSB7CiAgICAgICAgICAgICsraXQxOyAvLyBNb3ZlIGl0ZXJhdG9yIG9mIGwxIGZvcndhcmQKICAgICAgICB9IGVsc2UgaWYgKCppdDIgPCAqaXQxKSB7CiAgICAgICAgICAgICsraXQyOyAvLyBNb3ZlIGl0ZXJhdG9yIG9mIGwyIGZvcndhcmQKICAgICAgICB9IGVsc2UgeyAKICAgICAgICAgICAgLy8gQm90aCBlbGVtZW50cyBhcmUgZXF1YWwsIGFkZCB0byByZXN1bHQKICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjaygqaXQxKTsKICAgICAgICAgICAgKytpdDE7CiAgICAgICAgICAgICsraXQyOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7IC8vIFJldHVybiB0aGUgaW50ZXJzZWN0aW9uIGxpc3QKfQoKLy8gRnVuY3Rpb24gdG8gcHJpbnQgYSBsaXN0CnZvaWQgcHJpbnRMaXN0KGNvbnN0IHN0ZDo6bGlzdDxpbnQ+JiBsc3QpIHsKICAgIHN0ZDo6Y291dCA8PCAieyAiOwogICAgZm9yIChpbnQgbnVtIDogbHN0KSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IG51bSA8PCAiICI7CiAgICB9CiAgICBzdGQ6OmNvdXQgPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKfQoKLy8gTWFpbiBmdW5jdGlvbgppbnQgbWFpbigpIHsKICAgIC8vIFRlc3QgQ2FzZSAxOiB7MSwgMiwgMywgNH0g4oipIHsyLCAzfSA9IHsyLCAzfQogICAgc3RkOjpsaXN0PGludD4gbDEgPSB7MSwgMiwgMywgNH07CiAgICBzdGQ6Omxpc3Q8aW50PiBsMiA9IHsyLCAzfTsKICAgIHN0ZDo6bGlzdDxpbnQ+IHJlc3VsdDEgPSBpbnRlcnNlY3Rpb24obDEsIGwyKTsKCiAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgQ2FzZSAxOiBJbnRlcnNlY3Rpb246ICI7CiAgICBwcmludExpc3QocmVzdWx0MSk7IC8vIEV4cGVjdGVkIE91dHB1dDogezIsIDN9CiAgICAvLyBUZXN0IENhc2UgMjogezIsIDksIDE0fSDiiKkgezEsIDcsIDE1fSA9IHt9CiAgICBzdGQ6Omxpc3Q8aW50PiBsMyA9IHsyLCA5LCAxNH07CiAgICBzdGQ6Omxpc3Q8aW50PiBsNCA9IHsxLCA3LCAxNX07CiAgICBzdGQ6Omxpc3Q8aW50PiByZXN1bHQyID0gaW50ZXJzZWN0aW9uKGwzLCBsNCk7CiAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgQ2FzZSAyOiBJbnRlcnNlY3Rpb246ICI7CiAgICBwcmludExpc3QocmVzdWx0Mik7IC8vIEV4cGVjdGVkIE91dHB1dDoge30KCiAgICAvLyBUZXN0IENhc2UgMzogRW1wdHkgbGlzdCDiiKkgezIsIDN9ID0ge30KICAgIHN0ZDo6bGlzdDxpbnQ+IGw1OyAgLy8gRW1wdHkgbGlzdAogICAgc3RkOjpsaXN0PGludD4gbDYgPSB7MiwgM307CiAgICBzdGQ6Omxpc3Q8aW50PiByZXN1bHQzID0gaW50ZXJzZWN0aW9uKGw1LCBsNik7CgogICAgc3RkOjpjb3V0IDw8ICJUZXN0IENhc2UgMyAoRW1wdHkgbDEpOiBJbnRlcnNlY3Rpb246ICI7CiAgICBwcmludExpc3QocmVzdWx0Myk7IC8vIEV4cGVjdGVkIE91dHB1dDoge30KCiAgICByZXR1cm4gMDsKfQo=