已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。
Input
输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。
Output
在一行中输出两个输入序列的并集序列的中位数。
#include<iostream>
#include <set>
using namespace std;
int main()
{
int t,n;
cin>>t;
set<int> s;
for(int i=0;i<2*t;i++)
{
cin>>n;
s.insert(n);
}
set<int>::iterator it;
int num=s.size()+1;
it=s.begin();
for(int i=1;i<num/2;i++,it++);
cout<<*it<<endl;
return 0;
}

被折叠的 条评论
为什么被折叠?



