#include <stdio.h>
#include <limits.h>
int findK(int a[],int len_a,int begin_a,int b[],int len_b,int begin_b,int k){
//a/b数组无元素可查 直接返回b/a数组中的第begin_b/begin_a+k个元素值
if(begin_a>=len_a) return b[begin_b+k-1];
if(begin_b>=len_b) return a[begin_a+k-1];
//k值为1时 返回a和b数组begin位置值最小的那个数
if(k==1) return a[begin_a]>b[begin_b]?b[begin_b]:a[begin_a];
//取两数组begin开始的k/2位置的数的值,前提是被查询的数组剩下的元素的个数大于等于k/2
//ps:两数组至少有一个满足条件 否则一开始k>len_a+len_b
int mid_a=INT_MAX;
int mid_b=INT_MAX;
if(begin_a+k/2-1<len_a)mid_a=a[begin_a+k/2-1];
if(begin_b+k/2-1<len_b)mid_b=b[begin_b+k/2-1];
//比较数组a和b第k/2个数的大小 然后删去较小的那个数的数组的begin开始的k/2个数
if(mid_a>mid_b) return findK(a,len_a,begin_a,b,len_b,begin_b+k/2,k-k/2);
return findK(a,len_a,begin_a+k/2,b,len_b,begin_b,k-k/2);
}
int main (){
int a[]={2,8,6};
int b[]={1,3};
int len_a=sizeof(a)/sizeof(a[0]);
int len_b=sizeof(b)/sizeof(b[0]);
int mid1=findK(a,len_a,0,b,len_b,0,(len_a+len_b+1)/2);
int mid2=findK(a,len_a,0,b,len_b,0,(len_a+len_b+2)/2);
printf("%.2f",(mid1+mid2)/2.0);
return 0;
}