中位数

 

 这道题目因为n是1e5级别的所以输入一次再排序一次不现实,辣么有两个东西可以写这道题目,1小根堆(免去排序时间),2二分插入,由于小根堆太难写了所以采用第二种方法,简简单单~

#include <bits/stdc++.h>
using namespace std;
int n;
vector<int > a;
int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        a.insert(upper_bound(a.begin(),a.end(),x),x);//二分插入保证单调性,方便后面继续二分插入 
        if(i%2==1)  printf("%d\n",a[(i-1)/2]);//是奇数个就输出
    }
    return 0;
}

 

posted @ 2023-03-27 21:39  王浩泽  阅读(40)  评论(0编辑  收藏  举报