3401 数据结构实验之排序四:寻找大富翁
来源:互联网 发布:淘宝账号登陆不了 编辑:程序博客网 时间:2024/06/06 18:12
3401 数据结构实验之排序四:寻找大富翁
Time Limit: 200MS Memory Limit: 512KB
Problem Description
2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。
Input
首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。
Output
一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。
Example Input
6 312 6 56 23 188 60
Example Output
188 60 56
Hint
请用堆排序完成。
方法一:
#include <iostream>#include <cstdio>using namespace std;int f[12],n,m;void tz(int l,int r){ int j=2*l; while(j<=r) { if(j<r && f[j+1]<f[j])//小根堆 j++; if(f[j]<f[l])// { *f=f[j]; f[j]=f[l]; f[l]=*f; l=j; j*=2; } else break; }}int main(){ while(scanf("%d %d",&n,&m)!=EOF) { int i; for(i=1;i<=m;i++) scanf("%d",f+i); for(i=m/2;i>=1;i--) tz(i,m); for(i=m+1;i<=n;i++) { int k; scanf("%d",&k); if(k>f[1]) { f[1]=k; int j; for(j=m/2;j>=1;j--) tz(j,m); } } for(i=m;i>=2;i--) { *f=f[1]; f[1]=f[i]; f[i]=*f; tz(1,i-1); } for(i=1;i<=m;i++) printf("%d%c",f[i],i==m?'\n':' '); } return 0;}
方法二:
#include<bits/stdc++.h>using namespace std;int main(){ int a[30]; int n,m,i,x; scanf("%d%d",&n,&m); for(i=0;i<m;i++) { scanf("%d",&a[i]); } sort(a,a+m); for(i=m;i<n;i++) { scanf("%d",&x); if(x>a[0]) { a[0]=x; sort(a,a+m); } } for(i=m-1;i>=0;i--) { printf("%d%c",a[i],i==0?'\n':' '); } return 0;}
阅读全文
0 0
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序四:寻找大富翁
- 3400 数据结构实验之排序三:bucket sort
- ubuntu16.04配置php5.6
- Java基础知识02-流程控制结构
- 扫雷
- 软件工程—软件需求分析
- 3401 数据结构实验之排序四:寻找大富翁
- 分类属性设置-可视化
- quartz之Hello
- redis设置密码和redis主从复制
- java中Volatile变量
- 使用babel深入理解es7的decorator
- 南邮CTF逆向题第二道ReadAsm2解题思路
- Spring事务传播机制-REQUIRES_NEW
- caffe中如何设置某层不参与反向传播