数据结构/PTA-寻找大富翁/排序

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

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

输入格式:

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

输出格式:

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

输入样例:

8 3
8 12 7 3 20 9 5 18

输出样例:

20 18 12
#include<bits/stdc++.h>
using namespace std;
const int y=1000006;

struct million
{
    int m;
} r[y];

bool judge(million a,million b)
{
    return a.m>b.m;
}
int main()
{
    int a,b;
     scanf("%d %d", &a, &b);     //输入人数和排名
    b=min(a,b);
    int i;
    for(i=0; i<a; i++) //输入所有人
    {
          scanf("%d", &r[i].m);
    }

    sort(r,r+y,judge);//排序


    printf("%d",r[0].m);//按排名输出
    for(i=1; i<b; i++)
    {
        printf(" %d",r[i].m);
    }
}
 
原文地址:https://www.cnblogs.com/elegantcloud/p/14019125.html