AcWing 106. 动态中位数
依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数。
#include<bits/stdc++.h> using namespace std; priority_queue<int> down; priority_queue<int,vector<int>,greater<int> > up; int main() { int t;scanf("%d",&t); while(t--) { int id,n;scanf("%d%d",&id,&n); printf("%d %d\n",id,(n+1)/2); int cnt=0; for(int i=1;i<=n;i++) { int x;scanf("%d",&x); if(down.empty()||x<=down.top())down.push(x); else up.push(x); if(down.size()>up.size()+1)up.push(down.top()),down.pop(); if(up.size()>down.size())down.push(up.top()),up.pop(); if(i%2) { printf("%d ",down.top());cnt++; if(cnt%10==0)putchar('\n'); } }if(cnt%10)putchar('\n'); } return 0; }