题目: Description 给你一个序列。对于每个区间[l,r]都会有一个中位数,为x[len/2+1]。
所以共有(1+n)*n/2个中位数,这些中位数再取中位数。问你这个中位数是多少。
Format Input 一行给出数字N. 接下来一行N个数字Xi,代表这个数列
1≤N≤100000
1≤Xi≤10^9
Output 如题
Samples 输入数据 1 3 10 30 20 输出数据 1 30 Hint
数列 (10) 的中位数 10.
数列 (30) 的中位数 30.
数列 (20) 的中位数 20.
数列 (10,30) 的中位数 30.
数列 (30,20) 的中位数 30.
数列 (10,30,20) 的中位数 20.
于是对于数列(10,30,20,30,30,20) 其中位数为 30.
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000001],b[2000001];
int n,l=1,r=1,mid,x=1;
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(l=1;l<=n;l++)
{
for(r=l;r<=n;r++)
{
mid=(l+r)/2;
if(mid==1) b[x]=a[mid];
else
{
b[x]=a[mid+1];
x++;
}
}
}
sort(b+1,b+1+x);
cout<<b[x/2+1];
return 0;
}