【1055】The World's Richest (25 分)

举报
野猪佩奇996 发表于 2022/01/23 00:59:31 2022/01/23
【摘要】 #include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm> #include<map>#inclu...

  
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<string.h>
  6. #include<algorithm>
  7. #include<map>
  8. #include<vector>
  9. #include<queue>
  10. using namespace std;
  11. //∵题意M<100,∴预处理:将每个年龄中财富前100名以内的人全部存到另一个数组中
  12. //后面直接在这个新数组中查询(防止超时)
  13. const int maxn=100010;
  14. int Age[maxn]={0}; //某年龄的人数
  15. struct Person{
  16. int age,worths; //年龄、财富值
  17. char name[10];//姓名
  18. }ps[maxn],valid[maxn]; //所有人、在各自年龄中财富值在100名以内的人
  19. bool cmp(Person a,Person b){
  20. if(a.worths != b.worths) return a.worths>b.worths; //按财富值从大到小排序
  21. else if(a.age != b.age) return a.age<b.age; //按年龄从小到大排序
  22. return strcmp(a.name,b.name) <0; //按姓名字典序从小到大排序
  23. }
  24. int main(){
  25. int n,k; //总人数、查询人数
  26. scanf("%d%d",&n,&k);
  27. for(int i=0;i<n;i++){
  28. scanf("%s%d%d",ps[i].name,&ps[i].age,&ps[i].worths);
  29. }
  30. sort(ps,ps+n,cmp);
  31. int validNum=0; //存放到valid数组中的人数
  32. for(int i=0;i<n;i++){
  33. if(Age[ps[i].age] < 100){ //年龄ps[i].age的人数小于100人时
  34. Age[ps[i].age]++; //年龄ps[i].age的人数加1
  35. valid[validNum++]= ps[i];//将ps[i]加入新数组中
  36. }
  37. }
  38. int m,ageL,ageR;
  39. for(int i=1;i<=k;i++){
  40. scanf("%d%d%d",&m,&ageL,&ageR); //前M人,年龄区间[ageL,ageR]
  41. printf("Case #%d:\n",i);
  42. int printNum=0; //已输出的人数
  43. for(int j=0;j<validNum && printNum<m;j++){
  44. if(valid[j].age >= ageL && valid[j].age <=ageR){
  45. printf("%s %d %d\n",valid[j].name , valid[j].age , valid[j].worths );
  46. printNum++;
  47. }
  48. }
  49. if(printNum == 0){
  50. printf("None\n");
  51. }
  52. }
  53. system("pause");
  54. return 0;
  55. }

 

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/99699568

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。