方法:排序,然后依据限制条件输出。
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
struct rich{
char name[10];
int age,worth;
}ri[100010];
bool cmp(rich a,rich b){
if(a.worth!=b.worth) return a.worth>b.worth;
else if(a.age!=b.age) return a.age<b.age;
else return strcmp(a.name,b.name)<0;
}
int main(){
int N,K;
scanf("%d%d",&N,&K);
for(int i=0;i<N;i++)
scanf("%s%d%d",ri[i].name,&ri[i].age,&ri[i].worth);
sort(ri,ri+N,cmp);
for(int i=1;i<=K;i++){
int num,low,high,countr=0;
scanf("%d%d%d",&num,&low,&high);
printf("Case #%d:\n",i);
for(int j=0;j<N;j++){
if(ri[j].age>=low&&ri[j].age<=high){
printf("%s %d %d\n",ri[j].name,ri[j].age,ri[j].worth);
if(++countr==num) break;
}
}
if(countr==0) printf("None\n");
}
return 0;
}