真是是一道很搞人的题
1.数据能从1开始的,好确定中间位置
2.第一个数组离线,第二个数组在线处理

#include<cstdio>
const int maxn = 2e5+10;
const int INF = 0x7fffffff;
int a[maxn];

int main(){
	int n,m,num;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d", &a[i]);
	}
	scanf("%d",&m);
	a[n+1] = INF;
	int mid = (m+n+1)>>1;
	int cnt = 0,j=1;
	for(int i=0;i<m;i++){
		scanf("%d",&num);
		while(num > a[j]){
			cnt++;
			if(cnt == mid) printf("%d",a[j]);
			j++;
		}
		cnt++;
		if(cnt == mid) printf("%d",num);
	}	
	
	while(j <= n){
		cnt++;
		if(cnt == mid) {
			printf("%d",a[j]);
			break;
		}
		j++;
	}
	return 0;
}