#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
#define TreeNode TreeNodeDummy
struct TreeNode{
int val;
TreeNode * left;
TreeNode * right;
TreeNode( int x) : val( x) , left( NULL ) , right( NULL ) {
}
}
;
#undef TreeNode
int s;
int arr[ 5100 ] ;
int s1;
int arr1[ 5100 ] ;
int s2;
int arr2[ 5100 ] ;
void doit( TreeNode * x) {
if ( x== NULL ) {
return ;
}
arr[ s++ ] = x- > val;
doit( x- > left) ;
doit( x- > right) ;
}
class Solution{
public :
bool twoSumBSTs( TreeNode* root1, TreeNode* root2, int target) {
int i;
int j;
set< int > ss;
s = 0 ;
doit( root1) ;
s1 = s;
for ( i= ( 0 ) ; i< ( s1) ; i++ ) {
arr1[ i] = arr[ i] ;
}
s = 0 ;
doit( root2) ;
s2 = s;
for ( i= ( 0 ) ; i< ( s2) ; i++ ) {
arr2[ i] = arr[ i] ;
}
for ( i= ( 0 ) ; i< ( s1) ; i++ ) {
ss.insert ( arr1[ i] ) ;
}
for ( i= ( 0 ) ; i< ( s2) ; i++ ) {
if ( ss.count ( target - arr2[ i] ) ) {
return true ;
}
}
return false ;
}
}
;
// cLay varsion 20191006-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// #define TreeNode TreeNodeDummy
// struct TreeNode {
// int val;
// TreeNode *left;
// TreeNode *right;
// TreeNode(int x) : val(x), left(NULL), right(NULL) {}
// };
// #undef TreeNode
//
// int s, arr[5100];
// int s1, arr1[5100];
// int s2, arr2[5100];
//
// void doit(TreeNode *x){
// if(x==NULL) return;
// arr[s++] = x->val;
// doit(x->left);
// doit(x->right);
// }
//
// class Solution {
// public:
// bool twoSumBSTs(TreeNode* root1, TreeNode* root2, int target) {
// int i, j;
// set<int> ss;
//
// s = 0;
// doit(root1);
// s1 = s;
// rep(i,s1) arr1[i] = arr[i];
//
// s = 0;
// doit(root2);
// s2 = s;
// rep(i,s2) arr2[i] = arr[i];
//
// rep(i,s1) ss.insert(arr1[i]);
// rep(i,s2) if(ss.count(target - arr2[i])) return true;
// return false;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KI2RlZmluZSBUcmVlTm9kZSBUcmVlTm9kZUR1bW15CnN0cnVjdCBUcmVlTm9kZXsKICBpbnQgdmFsOwogIFRyZWVOb2RlICpsZWZ0OwogIFRyZWVOb2RlICpyaWdodDsKICBUcmVlTm9kZShpbnQgeCkgOiB2YWwoeCksIGxlZnQoTlVMTCksIHJpZ2h0KE5VTEwpewogIH0KfQo7CiN1bmRlZiBUcmVlTm9kZQppbnQgczsKaW50IGFycls1MTAwXTsKaW50IHMxOwppbnQgYXJyMVs1MTAwXTsKaW50IHMyOwppbnQgYXJyMls1MTAwXTsKdm9pZCBkb2l0KFRyZWVOb2RlICp4KXsKICBpZih4PT1OVUxMKXsKICAgIHJldHVybjsKICB9CiAgYXJyW3MrK10gPSB4LT52YWw7CiAgZG9pdCh4LT5sZWZ0KTsKICBkb2l0KHgtPnJpZ2h0KTsKfQpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgYm9vbCB0d29TdW1CU1RzKFRyZWVOb2RlKiByb290MSwgVHJlZU5vZGUqIHJvb3QyLCBpbnQgdGFyZ2V0KXsKICAgIGludCBpOwogICAgaW50IGo7CiAgICBzZXQ8aW50PiBzczsKICAgIHMgPSAwOwogICAgZG9pdChyb290MSk7CiAgICBzMSA9IHM7CiAgICBmb3IoaT0oMCk7aTwoczEpO2krKyl7CiAgICAgIGFycjFbaV0gPSBhcnJbaV07CiAgICB9CiAgICBzID0gMDsKICAgIGRvaXQocm9vdDIpOwogICAgczIgPSBzOwogICAgZm9yKGk9KDApO2k8KHMyKTtpKyspewogICAgICBhcnIyW2ldID0gYXJyW2ldOwogICAgfQogICAgZm9yKGk9KDApO2k8KHMxKTtpKyspewogICAgICBzcy5pbnNlcnQoYXJyMVtpXSk7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoczIpO2krKyl7CiAgICAgIGlmKHNzLmNvdW50KHRhcmdldCAtIGFycjJbaV0pKXsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MTAwNi0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vICNkZWZpbmUgVHJlZU5vZGUgVHJlZU5vZGVEdW1teQovLyBzdHJ1Y3QgVHJlZU5vZGUgewovLyAgIGludCB2YWw7Ci8vICAgVHJlZU5vZGUgKmxlZnQ7Ci8vICAgVHJlZU5vZGUgKnJpZ2h0OwovLyAgIFRyZWVOb2RlKGludCB4KSA6IHZhbCh4KSwgbGVmdChOVUxMKSwgcmlnaHQoTlVMTCkge30KLy8gfTsKLy8gI3VuZGVmIFRyZWVOb2RlCi8vIAovLyBpbnQgcywgYXJyWzUxMDBdOwovLyBpbnQgczEsIGFycjFbNTEwMF07Ci8vIGludCBzMiwgYXJyMls1MTAwXTsKLy8gCi8vIHZvaWQgZG9pdChUcmVlTm9kZSAqeCl7Ci8vICAgaWYoeD09TlVMTCkgcmV0dXJuOwovLyAgIGFycltzKytdID0geC0+dmFsOwovLyAgIGRvaXQoeC0+bGVmdCk7Ci8vICAgZG9pdCh4LT5yaWdodCk7Ci8vIH0KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGJvb2wgdHdvU3VtQlNUcyhUcmVlTm9kZSogcm9vdDEsIFRyZWVOb2RlKiByb290MiwgaW50IHRhcmdldCkgewovLyAgICAgaW50IGksIGo7Ci8vICAgICBzZXQ8aW50PiBzczsKLy8gICAgIAovLyAgICAgcyA9IDA7Ci8vICAgICBkb2l0KHJvb3QxKTsKLy8gICAgIHMxID0gczsKLy8gICAgIHJlcChpLHMxKSBhcnIxW2ldID0gYXJyW2ldOwovLyAKLy8gICAgIHMgPSAwOwovLyAgICAgZG9pdChyb290Mik7Ci8vICAgICBzMiA9IHM7Ci8vICAgICByZXAoaSxzMikgYXJyMltpXSA9IGFycltpXTsKLy8gCi8vICAgICByZXAoaSxzMSkgc3MuaW5zZXJ0KGFycjFbaV0pOwovLyAgICAgcmVwKGksczIpIGlmKHNzLmNvdW50KHRhcmdldCAtIGFycjJbaV0pKSByZXR1cm4gdHJ1ZTsKLy8gICAgIHJldHVybiBmYWxzZTsKLy8gICB9Ci8vIH07Cg==
compilation info
prog.cpp:25:11: error: variable or field ‘doit’ declared void
void doit(TreeNode *x){
^~~~~~~~
prog.cpp:25:11: error: ‘TreeNode’ was not declared in this scope
prog.cpp:25:11: note: suggested alternative: ‘remove’
void doit(TreeNode *x){
^~~~~~~~
remove
prog.cpp:25:21: error: ‘x’ was not declared in this scope
void doit(TreeNode *x){
^
prog.cpp:35:19: error: ‘TreeNode’ has not been declared
bool twoSumBSTs(TreeNode* root1, TreeNode* root2, int target){
^~~~~~~~
prog.cpp:35:36: error: ‘TreeNode’ has not been declared
bool twoSumBSTs(TreeNode* root1, TreeNode* root2, int target){
^~~~~~~~
prog.cpp: In member function ‘bool Solution::twoSumBSTs(int*, int*, int)’:
prog.cpp:40:5: error: ‘doit’ was not declared in this scope
doit(root1);
^~~~
prog.cpp:40:5: note: suggested alternative: ‘div’
doit(root1);
^~~~
div
stdout