AC代码:用归并思想
#include<cstdio>
const int INF = 100000000;
int arr1[200010];
int arr2[200010];
int main() {
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&arr1[i]);
}
scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%d",&arr2[i]);
}
arr1[n]= INF;
arr2[m]= INF;
int len = n+m;
int index;
index = (n+m-1)/2;
int i = 0 , j = 0 ,loc = 0;
while(loc < index){
if(arr1[i] >= arr2[j]) j++;
else i++;
loc++;
}
if(arr1[i] >= arr2[j]) printf("%d",arr2[j]);
else printf("%d",arr1[i]);
}
朴素思想代码 但最后一个测试点超时
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
typedef int INT;
const int maxn = 400010;
set<INT> arr;
int main(){
int n,m;
INT value;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&value);
arr.insert(value);
}
scanf("%d",&m);
int len = n+m;
int index;
if(len%2 == 0 ) index = len/2 - 1;
else index = len/2;
for(int i=0;i<m;i++){
scanf("%d",&value);
arr.insert(value);
}
set<INT>::iterator it = arr.begin();
while(index--){
it++;
}
printf("%d",*it) ;
}