火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国家的最强忍者的头衔,史上最强火影为鸣人的父亲--四代火影波风水门,乃是传说级的人物,也是最年轻的火影,要成为火影,不仅需要有千种忍术和全村人的认同 更要有冷静的头脑 德高望重也必不可少 还要有优秀的领导能力,这之中战斗能力是最重要的,然后是领导能力,现在又到了选火影的时候了,可是鸣人此时还很弱,所以给出m个候选人,每个人有战斗力、领导能力两个主要的作为能力判断的依据,还有n个个人信息,第一条信息为名字,按战斗力和领导能力的高低作为标准,判断这些人中最具有担任火影资格的k人。
Input | 第一行:m,n,k都为整数 然后是m个候选人的信息,每个人的信息包括n行,第一行是名字,接下来n-1行是其他信息,每条信息为不超过100的字符串,然后是战斗力、领导能力为一行,m、n不超过500. k不超过50.字符串均不包括空白符 | Output | 输出前k个人的名字。战斗力和领导能力都相同则按名字的字典序排列。(如果名字也相同则依次按后面的个人信息的字典序排列) |
Sample Input | 5 3 3 dawn haligong dianji 500 500 freelon haligong wangluo 500 500 zeropointer haligong dianqi 600 400 cha haligong computer 800 600 13brother haligong computer 400 400 | Sample Output | cha zeropointer dawn
| Source | 2012 Spring Contest 3 - STL | Author | 拂晓 | #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct huo{
char name[105];
char info[505][105];
int z,l;
}p[505];
bool cmp(huo a,huo b)
{
int i=0;
if(a.z!=b.z)
return a.z>b.z;
else if(a.l!=b.l)
return a.l>b.l;
else if(strcmp(a.name,b.name)!=0)
return strcmp(a.name,b.name)<0;
else
{
while(strcmp(a.info[i],b.info[i])==0)
i++;
return strcmp(a.info[i],b.info[i])<0;
}
}
int main()
{
int m,n,k;
while(~scanf("%d%d%d",&m,&n,&k))
{
for(int i=0;i<m;i++)
{
scanf("%s",p[i].name);
for(int j=0;j<n-1;j++)
scanf("%s",p[i].info[j]);
scanf("%d%d",&p[i].z,&p[i].l);
}
sort(p,p+m,cmp);
for(int i=0;i<k;i++)
printf("%s\n",p[i].name);
}
return 0;
}
|