火影忍者之~鸣人

火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国家的最强忍者的头衔,史上最强火影为鸣人的父亲--四代火影波风水门,乃是传说级的人物,也是最年轻的火影,要成为火影,不仅需要有千种忍术和全村人的认同
更要有冷静的头脑 德高望重也必不可少 还要有优秀的领导能力,这之中战斗能力是最重要的,然后是领导能力,现在又到了选火影的时候了,可是鸣人此时还很弱,所以给出m个候选人,每个人有战斗力、领导能力两个主要的作为能力判断的依据,还有n个个人信息,第一条信息为名字,按战斗力和领导能力的高低作为标准,判断这些人中最具有担任火影资格的k人。

HRBUST1310 火影忍者之~鸣人                                                                                            2017-03-06 16:01             104人阅读              评论(0)              收藏-LMLPHP

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

——————————————————————————————————————

排序题,按题目所述排序

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <string>
#include <set>
#include <map>
using namespace std; int m,n,k;
struct node
{
int zhan,ling;
char s[505][105];
}p[505]; bool cmp(node a,node b)
{
if(a.zhan!=b.zhan)
return a.zhan>b.zhan;
if(a.ling!=b.ling)
return a.ling>b.ling;
for(int i=0;i<n;i++)
{
if(strcmp(a.s[i],b.s[i])!=0)
return strcmp(a.s[i],b.s[i])<0;
}
} int main()
{ while(cin>>m>>n>>k)
{
memset(p,0,sizeof(p));
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>p[i].s[j];
}
cin>>p[i].zhan>>p[i].ling;
}
sort(p,p+m,cmp);
for(int i=0;i<k;i++)
printf("%s\n",p[i].s[0]);
} return 0;
}

05-06 03:13