int find_kth(int A[],int m, int B[], int n, int k) {
//alwaysassume that m is equal or smaller than n
if(m > n) return find_kth(B, n, A, m, k);
if(m == 0) return B[k - 1];
if(k == 1) return min(A[0], B[0]);
//dividek into two parts
intia = min(k / 2, m), ib = k - ia;
if(A[ia - 1] < B[ib - 1])
returnfind_kth(A + ia, m - ia, B, n, k - ia);
elseif (A[ia - 1] > B[ib - 1])
returnfind_kth(A, m, B + ib, n - ib, k - ib);
else
returnA[ia - 1];
}