解法一:归并
根据两个数组长度算出中位数的位置,然后进行归并。
#include <bits/stdc++.h>#define Long long longusing 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';}}
