解法一:归并
根据两个数组长度算出中位数的位置,然后进行归并。
#include <bits/stdc++.h>
#define Long long long
using namespace std;
Long A[200005];
Long B[200005];
int main() {
int lenA, lenB;
cin >> lenA;
for (int i = 0; i < lenA; ++i) {
cin >> A[i];
}
A[lenA] = 0x7fffffffffffffff;
cin >> lenB;
for (int i = 0; i < lenB; ++i) {
cin >> B[i];
}
B[lenB] = 0x7fffffffffffffff;
int pos = (lenA + lenB - 1) / 2;
int i = 0;
int j = 0;
while (pos > 0) {
if (A[i] < B[j]) {
++i;
} else {
++j;
}
--pos;
}
if (A[i] < B[j]) {
cout << A[i] << '\n';
} else {
cout << B[j] << '\n';
}
}