中位数
这道题目因为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; }