这题还算简单,很明显是用归并排序,其它排序可能会超时,另外,要用stdio,不然也会超时。还有就是注意是long,int会产生错误 。
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
long N,M,m;
vector<long> v1,v2;
scanf("%ld",&N);
v1.resize(N);
for(long i=0;i<N;i++)
scanf("%ld",&v1[i]);
scanf("%ld",&M);
v2.resize(M);
for(long i=0;i<M;i++)
scanf("%ld",&v2[i]);
if((N+M)%2==0)
m=(N+M)/2;
else
m=(N+M+1)/2;
long i=1;
vector<long>::iterator it1=v1.begin();
vector<long>::iterator it2=v2.begin();
long r;
while((i++)<=m)
{
if(it1==v1.end())
{r=*it2;it2++;}
else if(it2==v2.end())
{r=*it1;it1++;}
else
{
if(*it1<*it2)
{r=*it1;it1++;}
else
{r=*it2;it2++;}
}
}
printf("%ld\n",r);
return 0;
}