classSolution{public:intfun(vector<int>& nums1,int i, vector<int>& nums2,int j,int k){if(i >= nums1.size())return nums2[j + k -1];if(j >= nums2.size())return nums1[i + k -1];if(k ==1)returnmin(nums1[i], nums2[j]);int val1 =(i + k /2-1< nums1.size()? nums1[i + k /2-1]: INT_MAX);int val2 =(j + k /2-1< nums2.size()? nums2[j + k /2-1]: INT_MAX);if(val1 < val2){returnfun(nums1, i + k /2, nums2, j, k - k /2);}else{returnfun(nums1, i, nums2, j + k /2, k - k /2);}}doublefindMedianSortedArrays(vector<int>& nums1, vector<int>& nums2){int n = nums1.size(), m = nums2.size();return1.0*(fun(nums1,0, nums2,0,(n + m +1)/2)+fun(nums1,0, nums2,0,(n + m +2)/2))/2;}};