PAT A1055 The World's Richest

题目链接

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct person{
    char name[10];
    int age;
    int networth;
}Rank[1000000];
bool cmp(person a,person b){
    if(a.networth!=b.networth) return a.networth>b.networth;//按照财富值从大到小排列
    else if(a.age!=b.age)  return a.age<b.age;//如果财富值相等,按照年龄从小到大排列
    else return strcmp(a.name,b.name)<0;//财富和年龄都相等,按姓名字典序排列
}
int main(){
    int n,k,m,casenum,amin,amax,count;
    scanf("%d%d",&n,&k);//输入人数和查询数
    for(int i=0;i<n;i++){
        scanf("%s %d %d",Rank[i].name,&Rank[i].age,&Rank[i].networth);
    }//输入姓名,年龄,财富值等信息
    sort(Rank,Rank+n,cmp);//排序
    for(casenum=1;casenum<=k;casenum++){//casenum为查询序号
        count=0;//本查询输出数清零
        scanf("%d%d%d",&m,&amin,&amax);//输入最大输出数,最小年龄和最大年龄界限
        printf("Case #%d:\n",casenum);//输出case序号
        for(int j=0;j<n&&count<m;j++){//按年龄区间筛选
            if(Rank[j].age>=amin&&Rank[j].age<=amax){
                printf("%s %d %d\n",Rank[j].name,Rank[j].age,Rank[j].networth);
                count++;//输出记录数加1
            }
        }
         if(count==0)printf("None\n");//如果输出记录数为零,则输出None
    }
  return 0;
}
发布了81 篇原创文章 · 获赞 0 · 访问量 680

猜你喜欢

转载自blog.csdn.net/weixin_44546393/article/details/105318708