题目描述
分析:结构体排序,在sort排序时可以使用lambda表达式书写,更方便
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct person{
string name;
int age;
int worth;
}p[100005];
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++){
cin>>p[i].name>>p[i].age>>p[i].worth;
}
sort(p,p+n,[](const person& p1,const person& p2){
if(p1.worth!=p2.worth){
return p1.worth>p2.worth;
}
else if(p1.age!=p2.age){
return p1.age<p2.age;
}
else{
return p1.name<p2.name;
}
});
for(int i=1;i<=k;i++){
int num,amin,amax;
bool flag=false;
cin>>num>>amin>>amax;
cout<<"Case #"<<i<<":\n";
for(int j=0;j<n&&num>0;j++){
if(p[j].age>=amin&&p[j].age<=amax){
cout<<p[j].name<<" "<<p[j].age<<" "<<p[j].worth<<endl;
num--;
flag=true;
}
}
if(!flag){
cout<<"None"<<endl;
}
}
return 0;
}