#include <iostream>
#include <algorithm>
using namespace std;
namespace mj {
void search(int *A, int *B, int M, int N, int answer)
{
if(M > N) return search(B, A, N, M, answer);
for(int i = 0; i < M; ++i) {
int rem = answer - A[i];
if( binary_search(B, B+N, rem) ) {
cout << answer << " found" << endl;
return;
}
}
cout << answer << " not found" << endl;
}
}
int main() {
int A[] = {1,2,3,4,5};
int B[] = {6, 7, 8, 9, 10}; // Assuming both are sorted
const int M = sizeof A / sizeof A[0];
const int N = sizeof B / sizeof B[0];
mj::search(A, B, M, N, 13);
mj::search(A, B, M, N, 16);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbmFtZXNwYWNlIG1qIHsKdm9pZCBzZWFyY2goaW50ICpBLCBpbnQgKkIsIGludCBNLCBpbnQgTiwgaW50IGFuc3dlcikKewoJaWYoTSA+IE4pIHJldHVybiBzZWFyY2goQiwgQSwgTiwgTSwgYW5zd2VyKTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgTTsgKytpKSB7CiAgICAJaW50IHJlbSA9IGFuc3dlciAtIEFbaV07CiAgICAJaWYoIGJpbmFyeV9zZWFyY2goQiwgQitOLCByZW0pICkgewogICAgCQljb3V0IDw8IGFuc3dlciA8PCAiIGZvdW5kIiA8PCBlbmRsOwogICAgCQlyZXR1cm47CiAgICAJfQogICAgfQogICAgY291dCA8PCBhbnN3ZXIgPDwgIiBub3QgZm91bmQiIDw8IGVuZGw7Cn0KfQoKaW50IG1haW4oKSB7CglpbnQgQVtdID0gezEsMiwzLDQsNX07CglpbnQgQltdID0gezYsIDcsIDgsIDksIDEwfTsgLy8gQXNzdW1pbmcgYm90aCBhcmUgc29ydGVkCgljb25zdCBpbnQgTSA9IHNpemVvZiBBIC8gc2l6ZW9mIEFbMF07Cgljb25zdCBpbnQgTiA9IHNpemVvZiBCIC8gc2l6ZW9mIEJbMF07CgogICAgbWo6OnNlYXJjaChBLCBCLCBNLCBOLCAxMyk7CiAgICBtajo6c2VhcmNoKEEsIEIsIE0sIE4sIDE2KTsKCglyZXR1cm4gMDsKfQ==