AcWing 1541. 世界首富
原题链接
中等
作者:
eveer
,
2021-08-22 13:45:46
,
所有人可见
,
阅读 261
#include<bits/stdc++.h>
using namespace std;
struct people
{
char name[10];
int age,weath;
};
int n,k;
bool cmp(people x,people y)
{
if(x.weath!=y.weath)
{
return x.weath>y.weath;
}
else if(x.age!=y.age)
{
return x.age<y.age;
}
else
{
return (strcmp(x.name,y.name)<0);
}
}
int book[210];
int main()
{
scanf("%d%d",&n,&k);
vector<people> vt(n),v;
for(int i=0;i<n;i++)
{
scanf("%s%d%d",&vt[i].name,&vt[i].age,&vt[i].weath);
}
sort(vt.begin(),vt.end(),cmp);
for(int i=0;i<n;i++)//遍历vt中的每一个值,如果每个年龄的人数少于100,则存入vt;否则不存入,因为总共只输出100个人
{
if(book[vt[i].age]<100)
{
v.push_back(vt[i]);
book[vt[i].age]++;
}
}
for(int m=1;m<=k;m++)
{
vector<people>t;
int num,amin,amax;
scanf("%d%d%d",&num,&amin,&amax);
int res=0;
for(int i=0;i<v.size();i++)
{
if(v[i].age>=amin&&v[i].age<=amax)//遍历读取出符合时间范围的
{
t.push_back(v[i]);
res++;
}
if(res==num)break;
}
if(m!=1)printf("\n");
printf("Case #%d:",m);
if(!res)printf("\nNone");
else
{
for(int i=0;i<t.size()&&i<num;i++)
{
printf("\n%s %d %d",t[i].name,t[i].age,t[i].weath);
}
}
}
return 0;
}