7-1 寻找大富翁 (25 分)

胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。

输入格式:

输入首先给出两个正整数N(≤10​6​​)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。

输出格式:

在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。

输入样例:

8 3
8 12 7 3 20 9 5 18

输出样例:

20 18 12

简单的排序问题,快排超时了,换了堆排序就过了

AC代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstdio>
#include <malloc.h> #define INF 0x3f3f3f3f
#define FRER() freopen("in.txt", "r", stdin)
#define FREW() freopen("out.txt", "w", stdout) using namespace std; const int maxn = 1e6 + ; int num[maxn]; void adjust(int s, int m) {
int temp = num[s];
for(int j = s * ; j <= m; j *= ) {
if(j < m && num[j] > num[j + ]) ++j;
if(temp <= num[j]) break;
num[s] = num[j];
s = j;
}
num[s] = temp;
} void heapSort(int n) {
for(int i = n / ; i > ; --i)
adjust(i, n);
for(int i = n; i > ; --i) {
swap(num[], num[i]);
adjust(, i - );
}
} int main()
{
int n, m;
scanf("%d %d", &n, &m);
for(int i = ; i <= n; ++i)
scanf("%d", &num[i]);
heapSort(n);
for(int i = ; i <= m && i <= n; ++i) {
printf("%d%c", num[i], (i == m || i == n) ? '\n' : ' ');
}
return ;
}

最新文章

  1. Chrome 控制台console的用法(转)
  2. java的基本数据类型有八种:
  3. handlebars.js 用 &lt;br&gt;替换掉 内容的换行符
  4. JSON字符串解析
  5. IOS第七天(3:UiTableView 模型和数据的分组的显示)
  6. 集合与Iterator
  7. C# 调用 C++ dll (类型对照)
  8. C# 将\u1234类型的字符转化成汉字
  9. 不同浏览器JS获取浏览器高度和宽度
  10. nodejs调试
  11. cocos2d-x结合cocosbuilder,不同屏幕适配小结
  12. jquery html5 file 上传图片显示图片
  13. 浅谈JavaScript的apply和call语句
  14. apache在window server 2003下的安全配置
  15. 第一个servlet程序
  16. 多线程中的event,用于多线程的协调
  17. unity2d开发windows phone游戏按钮问题
  18. Bjarne Stroustrup announces C++ Core Guidelines
  19. 解决SHAREJPOINT 跨域问题
  20. Javascript你不知道的那些事!(数字计算篇-变态篇)无意中聊天发现的一些奇怪的事情

热门文章

  1. Python数据报协议以及sockersever模块的使用
  2. Python人工智能之初识接口
  3. 关于android项目的习惯
  4. 线程队列queue
  5. 算法练习-Palindrome Number
  6. SuiteCRM-7.7.6 (Ubuntu 16.04)
  7. 5步玩转Power BI Embedded,老司机全程带路解析
  8. HUE安装与使用
  9. [转载]在VB.Net中获取COM对象的特定实例(Getting a specific instance of COM object in VB.Net)
  10. 快速提取邮箱地址(利用word或网站)