HLG 火影忍者之~静音

Description

传说中的火之国一年一度的公务员选拔又开始了!木叶忍者村此次也要从中选拔出5人来,作为即将上任的新火影纲手的小弟~,可是报考公务员的人数实在是太~~多啦!所以纲手的贴身随从—静音小姐,决定对这写人进行分m批的选拔,每次笔试n人,第一次选出5人,之后每次从这n人与之前参加笔试但未选中的人一起再选出分数最高的5人,这样下来可以刷掉一大批人,但纲手只需要5人,这时候就轮到静音小姐的跟班小弟--卡卡西,来将这些人再进行二次筛选,卡卡西决定对这些人进行忍术测试,然后选出前5名,作为最后选出的人选,如果忍术分数相同,那么名字字典序靠前的被选中。

HLG 火影忍者之~静音_第1张图片

Input
首先是整数mn,表示要进行m波笔试,每波n人,然后是m组,每组n行,每行包括一个字符串与两个整数,表示一个人的名字和他的笔试分数以及他的忍术分数。输入到文件结束,m<=100,n<=100名字不长于20,分数不超过100.
Output
按顺序输出最后选出的5人的名字,每个名字占一行
Sample Input

1 6

abc 10 20

bcd 20 30

cde 30 40

def 40 50

efg 50 60

fgh 60 70

Sample Output

fgh

efg

def

cde

bcd

code:

View Code
#include
#include<string.h>
#include<string>
#include
#include
#include
#include
using namespace std;
struct node
{
char name[22];
int bi,ren;
friend bool operator < (node a,node b)
{
if(a.bi==b.bi)
return strcmp(a.name,b.name)>0;
return a.bi }
}tmp,q[10000];
bool cmp(node a,node b)
{
if(a.ren==b.ren)
return strcmp(a.name,b.name)<0;
return a.ren>b.ren;
}
int main()
{
int i,m,n,j,pn;
while(scanf("%d%d",&m,&n)!=EOF)
{
pn=0;
priority_queueque;
for(i=0;i {
for(j=0;j {
scanf("%s%d%d",tmp.name,&tmp.bi,&tmp.ren);
que.push(tmp);
}
for(j=0;j<5;j++)
{
q[pn++]=que.top();
que.pop();
}
}
sort(q,q+pn,cmp);
for(i=0;i<5;i++)
printf("%s\n",q[i].name);
}
return 0;
}

 

 

转载于:https://www.cnblogs.com/dream-wind/archive/2012/03/19/2406608.html

你可能感兴趣的:(HLG 火影忍者之~静音)