题目:A1055 The World’s Richest
题意:
有$N$个人,每个人的信息有$Name,Age,Net_Worth$,现在需要对资产介于$[Amin,Amax]$的人按资产的升序进行输出,若相同则按年龄升序,若年龄相同,则按名字字典序排序。若无输出None
。
思路:
按题目的要求对所有人进行排序。然后遍历计数,进行输出。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include<iostream> #include<string.h> #include<string> #include<algorithm> using namespace std; struct { string name; int age,worth; }a[100010]; int n,k; bool cmp(node a,node b) { if(a.worth==b.worth) { if(a.age==b.age) return a.name<b.name; return a.age<b.age; } return a.worth>b.worth; } int main() { scanf("%d%d",&n,&k); for(int i=0;i<n;i++) { cin>>a[i].name; scanf("%d%d",&a[i].age,&a[i].worth); } sort(a,a+n,cmp); int casen=0; int m,amin,amax,cnt; while(k--) { scanf("%d%d%d",&m,&amin,&amax); cnt=0; printf("Case #%d:n",++casen); for(int i=0;i<n;i++) { if(cnt>=m) break; if(a[i].age>=amin&&a[i].age<=amax) { cout<<a[i].name; printf(" %d %dn",a[i].age,a[i].worth); cnt++; } } if(cnt==0) printf("Nonen"); } return 0; }
|
近期评论