pat 1055. The World's Richest (25)
2015-07-24 12:46
375 查看
1055. The World's Richest (25)
时间限制400 ms
内存限制
128000 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the world's wealthiest people. Now you are supposed to simulate this job, but concentrate only on the people in a certain range of ages. That is, given the net worths
of N people, you must find the M richest people in a given range of their ages.
Input Specification:
Each input file contains one test case. For each case, the first line contains 2 positive integers: N (<=105) - the total number of people, and K (<=103) - the number of queries. Then N lines
follow, each contains the name (string of no more than 8 characters without space), age (integer in (0, 200]), and the net worth (integer in [-106, 106]) of a person. Finally there are K lines
of queries, each contains three positive integers: M (<= 100) - the maximum number of outputs, and [Amin, Amax] which are the range of ages. All the numbers in a line are separated by a space.
Output Specification:
For each query, first print in a line "Case #X:" where X is the query number starting from 1. Then output the M richest people with their ages in the range [Amin, Amax]. Each person's information occupies a line, in the format
Name Age Net_Worth
The outputs must be in non-increasing order of the net worths. In case there are equal worths, it must be in non-decreasing order of the ages. If both worths and ages are the same, then the output must be in non-decreasing alphabetical order of the names. It
is guaranteed that there is no two persons share all the same of the three pieces of information. In case no one is found, output "None".
Sample Input:
12 4 Zoe_Bill 35 2333 Bob_Volk 24 5888 Anny_Cin 95 999999 Williams 30 -22 Cindy 76 76000 Alice 18 88888 Joe_Mike 32 3222 Michael 5 300000 Rosemary 40 5888 Dobby 24 5888 Billy 24 5888 Nobody 5 0 4 15 45 4 30 35 4 5 95 1 45 50
Sample Output:
Case #1: Alice 18 88888 Billy 24 5888 Bob_Volk 24 5888 Dobby 24 5888 Case #2: Joe_Mike 32 3222 Zoe_Bill 35 2333 Williams 30 -22 Case #3: Anny_Cin 95 999999 Michael 5 300000 Alice 18 88888 Cindy 76 76000 Case #4: None
解:结构体三级排序,对wealth降序,age和name升序。
代码:
#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct stu { char name[10]; int age; int wea; }; int comp(const void *a,const void *b) { if((*(stu *)a).wea != (*(stu *)b).wea) return (*(stu *)b).wea - (*(stu *)a).wea; else if((*(stu *)a).age != (*(stu *)b).age) return(*(stu *)a).age - (*(stu *)b).age; else return strcmp( (*(stu *)a).name , (*(stu *)b).name ); } int main() { int n,m; scanf("%d%d",&n,&m); stu *s=new stu[n+1]; for(int i=0;i<n;i++) { scanf("%s%d%d",&s[i].name,&s[i].age,&s[i].wea); } //sort qsort(s,n,sizeof(s[0]),comp); int cnt,nu,low,upp; for(int i=0;i<m;i++) { cnt=0; scanf("%d%d%d",&nu,&low,&upp); printf("Case #%d:\n",i+1); for(int i=0;i<n;i++) { if(cnt==nu) break; if(s[i].age>=low&&s[i].age<=upp) { cnt++; printf("%s %d %d\n",s[i].name,s[i].age,s[i].wea); continue; } if(s[i].age<low||s[i].age>upp) { continue; } } if(cnt==0) printf("None\n"); } }
相关文章推荐
- webform 购物车小程序,主要学习session的使用
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第41讲:PHP开发工具之zend studio介绍
- 如何把字符串复制给数组杭电11页几小题的总结
- dw的流体网格布局
- 营收规模大,不一定代表赚得多
- SGU Self-number2
- 修正EasyUI的BUG——Form中存在FileBox时的数据加载错误
- java实现图片写入高清字体及带边框的方法
- 广州组队线下活动
- SQL Server 维护计划实现数据库备份(Step by Step)
- Snail—OC学习之字典NSDictionary
- 使用shell编程实现删除指定文件夹中可执行文件
- Linux的设备管理
- Ajax实现将可以编辑的表格与数据库交互
- highcharts的dateTimeLabelFormat
- 可怜,的分母。
- 本地与虚拟机连接(host-only)图解
- JQuery实现可以编辑的表格
- 嵌入式linux之分离分层概念,总线驱动设备模型
- 连接OMAPL138 ARM9核时出现的Error connecting to the target: (Error -1063 @ 0x0)问题