#include<stdio.h>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<ctime>
#include<cstring>
#include<string>
#include<map>
using namespace std;
#define N 10010
int main()
{
// freopen("input.txt","r",stdin);
queue<long> a,b;
int an,bn,m,i=0;
long n;
cin>>an;
while(i++<an)
{
scanf("%ld",&n);
a.push(n);
}
cin>>bn;
m=(an+bn)/2;
i=0;
while(i++<bn)
{
scanf("%ld",&n);
b.push(n);
}
if((an+bn)%2==0) //注意分奇偶两种情况
m--;
while(m--)
{
if(!a.size())
b.pop();
else
if(!b.size())
a.pop();
else
if(a.front()>b.front())
b.pop();
else
a.pop();
}
if(!a.size())
cout<<b.front();
else
if(!b.size())
cout<<a.front();
else
if(a.front()>b.front())
cout<<b.front();
else
cout<<a.front();
cout<<endl;
return 0;
}
参考别人用的merge函数
#include <stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define N 1000100
long m,n,a[N],b[N],c[N*2];
int main()
{
long int i,j,k,t,mid;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%ld",a+i);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%ld",b+i);
merge(a,a+m,b,b+n,c);
if((m+n)%2==1)
printf("%ld\n",c[(m+n)/2]);
else
printf("%ld\n",c[(m+n)/2-1]);
return 0;
}