0
已解决
熊智晖
高级天翼
高级天翼
5520 桃园结义
经验值:800 时间限制:1000毫秒
题目描述 Description
东汉末年,刘备结识了关羽和张飞,他们决定一起匡扶汉室。于是在桃园结义,此时需要知道谁是大哥,要按照年龄排序。这个问题很简单。现在假设不止3个人,而是有n个人,请你帮这n个人按年龄从大到小排序。
输入描述 Input Description
第一行,一个整数n,表示人数
接下来n行,每行4个部分,name y m d,表示这个人的姓名和出生的年月日
输出描述 Output Description
把这n个人按照年龄从大到小排序,如果年龄一样,按照输入的顺序,先输入的后输出
样例输入 Sample Input
3 LiuBei 2020 1 1 GuanYu 2020 1 2 ZhangFei 2020 1 3
样例输出 Sample Output
LiuBei GuanYu ZhangFei
数据范围及提示 Data Size & Hint
n<=10000
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct sb{
string s;
long long a,b,c;
}a[10002];
bool cmp(sb a,sb b){
if(a.a!=b.a){
return a.a<b.a;
}
if(a.b!=b.b){
return a.b<b.b;
}
if(a.c!=b.c){
return a.c<b.c;
}
}
int main(){
//freopen("5520.in","r",stdin);
//freopen("5520.out","w",stdout);
long long n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].a>>a[i].b>>a[i].c;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}
10分???
0
已采纳
徐知乐
中级守护
中级守护
你的cmp函数写反了
bool cmp(P a,P b){
if(a.y!=b.y){
return a.y<b.y;
}else if(a.m!=b.m){
return a.m<b.m;
}else if(a.d!=b.d){
return a.d<b.d;
}
return a.id>b.id;
}
有图有真相:
徐知乐在2021-09-21 10:51:43追加了内容
还有,你最好把结构体名改一下
0
0
王文博
缔造者之神
缔造者之神
cmp:
bool cmp(stu a,stu b)
{
if(a.y!=b.y) return a.y<b.y;
if(a.m!=b.m) return a.m<b.m;
if(a.d!=b.d) return a.d<b.d;
return a.id>b.id;
}
望采纳!
0