直接使用结构体,然后排序,注意cmp函数的编写。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
struct man{
char name[10];
int age;
int worth;
};
man a[100001];
bool cmp(man a,man 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",a[i].name,&a[i].age,&a[i].worth);
sort(a,a+n,cmp);
for(int i=0;i<k;++i)
{
int m,low,up,count=0;
scanf("%d%d%d",&m,&low,&up);
printf("Case #%d:\n",i+1);
for(int j=0;j<n;++j)
if(a[j].age>=low&&a[j].age<=up)
{
printf("%s %d %d\n",a[j].name,a[j].age,a[j].worth);
count++;
if(count>=m)
break;
}
if(count==0)
printf("None\n");
}
}