1055 The World‘s Richest (25 分)难度: 一般 / 知识点: 多关键字排序

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1055 The World‘s Richest (25 分)难度: 一般 / 知识点: 多关键字排序相关的知识,希望对你有一定的参考价值。


https://pintia.cn/problem-sets/994805342720868352/problems/994805421066272768
这里: 注意用scanf,printf。
有一个小细节就是string如何用 scanf读入呢? 我们可以用char[]来读入,最后用char[]给string赋值即可。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,t;
struct node
{
    string name;
    int old;
    int rich;
}temp,people[N];
bool cmp(node a,node b)
{
    if(a.rich==b.rich)
    {
        if(a.old==b.old)
            return a.name<b.name;
        return a.old<b.old;
    }
    return a.rich>b.rich;
}
int main(void)
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
    {
        char name[15];
        scanf("%s%d%d",name,&temp.old,&temp.rich);
        temp.name=name;
        people[t++]=temp;
    }
    sort(people,people+n,cmp);
    for(int k=1;k<=m;k++)
    {
        printf("Case #%d:\\n",k);
        int cnt,minv,maxv; scanf("%d%d%d",&cnt,&minv,&maxv);
        t=0;
        for(int i=0;i<n;i++)
        {
            if(people[i].old>=minv&&people[i].old<=maxv) 
            printf("%s %d %d\\n",people[i].name.c_str(),people[i].old,people[i].rich),t++;
            if(t==cnt) break;
        }
        if(!t) puts("None");
    }
    return 0;
}

以上是关于1055 The World‘s Richest (25 分)难度: 一般 / 知识点: 多关键字排序的主要内容,如果未能解决你的问题,请参考以下文章

1055 The World's Richest (25 分)

PAT Advanced 1055 The World's Richest (25分)

1055 The World's Richest (25分)

1055 The World's Richest (25分)

1055 The World‘s Richest

PAT (Advanced Level) 1055. The World's Richest (25)