真是是一道很搞人的题
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;
}