int getKth(int* nums1, int m, int* nums2, int n, int k) { if(m > n) return getKth(nums2, n, nums1, m, k); if(m == 0) return nums2[k-1]; if(k == 1) return min(nums1[0], nums2[0]); int i = min(m, k/2); int j = min(k/2, n); if(nums1[i-1] > nums2[j-1]) return getKth(nums1, m, nums2+j, n-j, k-j); else return getKth(nums1+i, m-i, nums2, n, k-i); }