【1029 25 排序 双指针】 Median
传送门
题意
给定 \(n,m\) ,表示两个升序序列的长度,求出合并后的中位数
数据范围
\(n,m\leq 10^{5}\)
题解
- 直接排序
- 计算出中位数的位置,双指针在两个序列总取数字
Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
int n; cin >> n;
vector<ll> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
cin >> n;
vector<ll> b(n);
for (int i = 0; i < n; i++) cin >> b[i];
int mid = (a.size() + b.size() + 1) / 2;
int i = 0, j = 0, ans = 0;
for (int k = 0; k < mid; k++) {
ll x = i < a.size() ? a[i] : INT_MAX;
ll y = j < b.size() ? b[j] : INT_MAX;
if (x < y) ans = a[i++];
else ans = b[j++];
}
cout << ans;
}

浙公网安备 33010602011771号