题意:两个递增的序列,合并求中值。
思路:类似两个递增链表合并。
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int MAX_N = 200010;
int a[MAX_N];
int n, m;
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
scanf("%d", &m);
int t = (n + m + 1) >> 1;
int p2 = 0, p1 = 0;
int x, ans;
for (int i = 0; i < m; i++) {
scanf("%d", &x);
while (p1 < n && a[p1] <= x) {
if (p2 < t) {
ans = a[p1]; p2++;
}
p1++;
}
if (p2 < t) {
ans = x; p2++;
}
}
while (p2 < t) {
ans = a[p1]; p1++; p2++;
}
printf("%d\n", ans);
return 0;
}