AcWing 1506. 中位数
原题链接
简单
作者:
ls131
,
2021-04-05 00:07:25
,
所有人可见
,
阅读 324
#include<bits/stdc++.h> //给定两个递增序列,请你找出它们的中位数
using namespace std; //归并排序
const int N=2e5+10,M=N*2;
int a[N],b[N],c[M];
int n,m;
int main()
{
cin>>n;
for(int i=0;i<n;i++) scanf("%d",&a[i]);
cin>>m;
for(int i=0;i<m;i++) scanf("%d",&b[i]);
//两个子串 双指针 依次比较放入一个序列 中
int k=0; //新序列起点
int i=0,j=0; //重新初始化双指针
while(i<n&&j<m)
{
if(a[i]<=b[j]) c[k++]=a[i++];
else c[k++]=b[j++]; //小的先放前面
}
while(i<n) c[k++]=a[i++];
while(j<m) c[k++]=b[j++];
printf("%d\n",c[(n+m-1)/2]); //从0位开始计数 总个数减一(偏移量) 偏左
return 0;
}