poj2388Who's in the Middle【堆排序】
2015-08-19 00:20
204 查看
Language: Default Who's in the Middle
FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median' cow gives: half of the cows give as much or more than the median; half give as much or less. Given an odd number of cows N (1 <= N < 10,000) and their milk output (1..1,000,000), find the median amount of milk given such that at least half the cows give the same amount of milk or more and at least half give the same or less. Input * Line 1: A single integer N * Lines 2..N+1: Each line contains a single integer that is the milk output of one cow. Output * Line 1: A single integer that is the median milk output. Sample Input 5 2 4 1 3 5 Sample Output 3 Hint INPUT DETAILS: Five cows with milk outputs of 1..5 OUTPUT DETAILS: 1 and 2 are below 3; 4 and 5 are above 3. Source USACO 2004 November |
#include<cstdio> #include<cstdlib> #include<cstring> using namespace std; int A[10010]; int size; void swap(int *a,int *b){ int t; t=*a; *a=*b; *b=t; } void HeapAdjust(int i,int num){ int lson=i<<1; int rson=(i<<1)+1; int max=i; if(i<=size/2){ if(lson<=num&&A[lson]>A[max]){ max=lson; } if(rson<=num&&A[rson]>A[max]){ max=rson; } if(max!=i){ swap(&A[i],&A[max]); HeapAdjust(max,num); } } } void BuildHeap(){ for(int i=size>>1;i>=1;--i){ HeapAdjust(i,size); } } void Heapsort(){ BuildHeap(); for(int i=size;i>=1;--i){ swap(&A[1],&A[i]); HeapAdjust(1,i-1); } } int main() { int i; while(scanf("%d",&size)!=EOF){ for(i=1;i<=size;++i){ scanf("%d",&A[i]); } Heapsort(); printf("%d\n",A[size/2+1]); } return 0; }
相关文章推荐
- PreparedStatement中in子句的处理
- Ubuntu 下修改 Could not reliably determine the serve
- 遭遇Reply from : TTL expired in transit.
- "TTL expired in transit" 具体解释第1/3页
- SQL SERVER中关于exists 和 in的简单分析
- SQL查询中in和exists的区别分析
- 在MySQL中创建带有IN和OUT参数的存储过程的方法
- IIS访问ASP页面时报错The requested resource is in use.的解决办法
- js中for in语句的用法讲解
- Some tips of wmi scripting in jscript (1)
- Linux的获利之路
- Ajax in action 英文版配书源码 下载
- Select data from an Excel sheet in MSSQL
- SQL实现递归及存储过程中In()参数传递解决方案详解
- Mysql子查询IN中使用LIMIT应用示例
- Oracle In和exists not in和not exists的比较分析
- 解析thinkphp中的M()与D()方法的区别
- MySQL的FIND_IN_SET函数使用方法分享
- The Grabber v1.4.8.2 (2007.05.18) 下载
- MySQL查询in操作 查询结果按in集合顺序显示