题目:http://poj.org/problem?id=3784

将较小的数放入大根堆,较大的数放入小根堆,控制较小数堆大小比较大数堆小1,则较大数堆堆顶即为中位数。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int p,bh,m,a[10005],hp1[10005],hp2[10005],ct1,ct2;
void pus1(int x)
{
ct1++;
hp1[ct1]=x;
int now=ct1;
while(now>1)
{
int tp=now/2;
if(hp1[now]>hp1[tp])
swap(hp1[now],hp1[tp]),now=tp;
else break;
}
}
void pus2(int x)
{
ct2++;
hp2[ct2]=x;
int now=ct2;
while(now>1)
{
int tp=now/2;
if(hp2[now]<hp2[tp])
swap(hp2[now],hp2[tp]),now=tp;
else break;
}
}
int del1()
{
int res=hp1[1];
swap(hp1[1],hp1[ct1]);
ct1--;
int now=1;
while(now*2<=ct1)
{
int tp=now*2;
if(tp<ct1&&hp1[tp]<hp1[tp+1])tp++;
if(hp1[now]<hp1[tp])
swap(hp1[now],hp1[tp]),now=tp;
else break;
}
return res;
}
int del2()
{
int res=hp2[1];
swap(hp2[1],hp2[ct2]);
ct2--;
int now=1;
while(now*2<=ct2)
{
int tp=now*2;
if(tp<ct2&&hp2[tp]>hp2[tp+1])tp++;
if(hp2[now]>hp2[tp])
swap(hp2[now],hp2[tp]),now=tp;
else break;
}
return res;
}
void mv1()
{
int k=del1();
pus2(k);
}
void mv2()
{
int k=del2();
pus1(k);
}
int main()
{
scanf("%d",&p);
while(p--)
{
scanf("%d%d",&bh,&m);
ct1=0;ct2=0;
memset(hp1,0,sizeof hp1);
memset(hp2,0,sizeof hp2);
int js=0;
for(int i=1;i<=m;i++)
scanf("%d",&a[i]);
for(int i=1;i<=m;i++)
{
if(a[i]<hp1[1])
pus1(a[i]);
else pus2(a[i]);
if(i%2)
{
while(ct1>ct2-1)mv1();
while(ct1<ct2-1)mv2();
js++;
if(js==1)printf("%d %d\n",bh,(m+1)/2);
printf("%d ",hp2[1]);
if(js%10==0)printf("\n");
}
}
if(js%10)printf("\n");
}
return 0;
}

  

最新文章

  1. 数据库中树形列表(以easyui的tree为例)
  2. linux常用命令(二)
  3. [原创]Java静态代码检查工具介绍
  4. 第三篇 Integration Services:增量加载-Adding Rows
  5. MVC 上传文件并展示
  6. hdu 4719 动态规划
  7. 【转】 树莓派学习笔记——I2C设备载入和速率设置
  8. VB6之WebBrowser控件
  9. C 语言内存区域分配(进程的各个段)详解
  10. Null value was assigned to a property of primitive type setter of com.oa.manager.personnel.bean.KqAttendanceHoliday.dayType
  11. unity开发多语言版本
  12. [Basics] 递归
  13. Django框架的使用教程--类视图-中间间-模板[六]
  14. hdu1828 扫描线计算周长
  15. 漫画描述HDFS工作原理
  16. webapi文件上传和下载
  17. 51nod 1532 带可选字符的多字符串匹配(位运算)
  18. storm(一) window机制
  19. 50个php程序性能优化的方法,赶紧收藏吧!
  20. MongoDB的Go语言驱动注意点

热门文章

  1. leetCode 47.Permutations II (排列组合II) 解题思路和方法
  2. centOS下安装ejabberd
  3. PowerBuilder -- 数据窗口
  4. centOS7 安装nginx+php+mysql
  5. 编译安装Heartbeat常见错误
  6. 九度OJ 1013:开门人和关门人 (排序)
  7. 【题解】kth异或和/魔改版线性基
  8. python数据分析之:数据清理,转换,合并,重塑(一)
  9. Arcgis SOE学习
  10. Java基础之I/O流