时间限制:1s内存限制:128M
题目描述
冷月老师的班级里有n名同学,给定他们每个人的姓名和本次考试的成绩,请帮助冷月老师将他们按成绩排名后从高到低输出每个人的名字.
【输出格式】
输出包含n行,每行一个字符串,代表排名为n的同学的姓名.若存在重分,按姓名字典序排名.
【输入输出样例#1】
输入#1
5 meow 3 cat 2 alice 7 bob 6 caiwei 7
输出#1
alice caiwei bob meow cat
【数据范围】
1≤n≤104; 分数不超过100; 人名不超过10个字符,且没有重名.
解法:
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
struct node //定义结构体
{
string s; //s代表名字
int fra; //fra代表成绩
};
bool cmp(node x,node y)
{
if(x.fra!=y.fra)return x.fra>y.fra;
return x.s<y.s; //如果成绩相同名字就按字典序排序
}
node a[10010];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].s>>a[i].fra;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
cout<<a[i].s<<endl;
}
return 0;
}
没登陆的:
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
struct node //定义结构体
{
string s; //s代表名字
int fra; //fra代表成绩
};
bool cmp(node x,node y)
{
if(x.fra!=y.fra)return x.fra>y.fra;
return x.s<y.s; //如果成绩相同名字就按字典序排序
}
node a[10010];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].s>>a[i].fra;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
cout<<a[i].s<<endl;
}
return 0;
}