问题标题: 酷町堂:5520   桃园结义

0
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;
}

​

有图有真相:

https://ke.codingtang.com/#/problems/submitInfo?id=2615668

徐知乐在2021-09-21 10:51:43追加了内容

还有,你最好把结构体名改一下

0
张新杨
张新杨
高级守护
高级守护

cmp函数错了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ps:结构体名有点......

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
李牧晓
李牧晓
中级天翼
中级天翼

bool cmp(shike a,shike b){

    if(a.shi!=b.shi) return a.shi < b.shi;

    if(a.fen!=b.fen) return a.fen<b.fen;

    if(a.miao!=b.miao) return a.miao<b.miao;

    return a.id>b.id;

}

孩子,函数写错了~

我要回答