数据结构实验之排序四:寻找大富翁 【OJ--3401】【堆排序】
来源:互联网 发布:take it or leave it 编辑:程序博客网 时间:2024/04/28 13:23
题目描述
2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。
输入
首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。
输出
一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。
示例输入
6 312 6 56 23 188 60
示例输出
188 60 56
#include <iostream>#include <cstdio>using namespace std;int a[12];void heapjust(int s,int m) //把a[]建成小顶堆{ int t=a[s]; for(int i=2*s; i<=m; i*=2) { if(i<m&&a[i]>a[i+1]) i++; if(t<a[i]) break; a[s]=a[i]; s=i; } a[s]=t;}int main(){ int n,m,i,j; while(~scanf("%d %d",&n,&m)) { for(i=1; i<=m; i++) scanf("%d",&a[i]); for(i=m/2; i>0; i--) heapjust(i,m); for(i=m+1; i<=n; i++) { int x; scanf("%d",&x); if(x<=a[1]) continue; a[1]=x; //不断更新小顶堆 for(j=m/2; j>0; j--) heapjust(j,m); } for(i=m;i>1;i--) //最后堆排序 { int t=a[1]; a[1]=a[i]; a[i]=t; heapjust(1,i-1); } for(i=1; i<=m; i++) printf("%d%c",a[i],i==m?'\n':' '); } return 0;}
0 0
- 数据结构实验之排序四:寻找大富翁 【OJ--3401】【堆排序】
- 数据结构实验之排序四:寻找大富翁 sdut oj (3401)
- SDUT OJ 3401 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁 堆排序
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁(堆排序)
- SDUT 3401 数据结构实验之排序四:寻找大富翁(堆排序)
- SDUT 3401 数据结构实验之排序四:寻找大富翁 堆排序
- SDUT-3401 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- LeetCode 22 - Generate Parentheses
- KMP
- 适配器模式
- android之旅9 网络编程与消息队列
- 寻求公正是一种心理病
- 数据结构实验之排序四:寻找大富翁 【OJ--3401】【堆排序】
- ubuntu12.04 配置android 编译环境,个人经验小结
- POJ 1703 Find them, Catch them
- 边框文字效果的样式
- 记事本项目
- 1009. 说反话 (20)
- 万一开车撞人了,一位退休交警教给你的方法,一定要收存!
- Struts 2框架的大致处理流程
- OpenGL填充非凸多边形(网格化)