题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805466364755968
题目分析:
给出两个递增序列,将两者合并后的中位数输出。本题有点类似多项式的加法,可在输入第二个递增序列时,同时得到最终的结果。
参考代码:
#include <iostream>
using namespace std;
int s1[200001];
int main() {
int n, m;
cin >> n;
for (int i = 0; i < n; i++) scanf("%d", &s1[i]);
s1[n] = 1e9;
cin >> m;
int midPos = (n + m + 1) / 2;
int i = 0, temp, count = 0;
for (int j = 0; j < m; j++) { //在输入第二个序列的时候,可进行与第一个序列的比较
scanf("%d", &temp);
for(;s1[i] < temp; i++) {
count++;
if (midPos == count) printf("%d", s1[i]);
}
count++;
if (midPos == count) printf("%d", temp);
}
for(; i < n; i++) {
count++;
if (midPos == count) printf("%d", s1[i]);
}
return 0;
}