#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class Solution { public: double findMedianSortedArrays(vector& nums1, vector& nums2); }; int main() { vector n1, n2; int n, i; bool f; double rv1, rv2; Solution s; string l; istringstream ss; struct timeval tv; double t1, t2; getline(cin, l); if (l == "RTEST") { for (i = 0; i < 100000; i++) { n1.push_back((drand48()-0.5) * 2000000); if (i%2 == 0) n2.push_back((drand48()-0.5) * 2000000); } sort(n1.begin(), n1.end()); sort(n2.begin(), n2.end()); gettimeofday(&tv, NULL); t1 = tv.tv_usec; t1 /= 1000000.0; t1 += tv.tv_sec; rv1 = s.findMedianSortedArrays(n1, n2); gettimeofday(&tv, NULL); t2 = tv.tv_usec; t2 /= 1000000.0; t2 += tv.tv_sec; if (t2-t1 < 0.0001) { printf("Time ok\n"); } else { printf("Time too slow: %lf\n", t2); } } else { ss.clear(); ss.str(l); while (ss >> n) n1.push_back(n); sort(n1.begin(), n1.end()); getline(cin, l); ss.clear(); ss.str(l); while (ss >> n) n2.push_back(n); sort(n2.begin(), n2.end()); rv1 = s.findMedianSortedArrays(n1, n2); } for (n = 0; n < n2.size(); n++) n1.push_back(n2[n]); sort(n1.begin(), n1.end()); if (n1.size() % 2 == 1) { rv2 = n1[n1.size()/2]; } else { rv2 = n1[n1.size()/2] + n1[n1.size()/2-1]; rv2 /= 2.0; } cout << (rv1 == rv2) << endl; return 0; }