问题标题: 酷町堂:1332

1
0
已解决
王鑫烨
王鑫烨
中级光能
中级光能

1332

1332   调查年龄

题目描述 Description

酷町堂想调查学校每个同学的生日,然后将同学们按照年龄从大到小的顺序进行排序。

输入描述 Input Description

有2行,

第1行为总人数n(n<=10000);

第2行至第n+1行分别是每人的姓名s、出生年份y、出生月份m、出生日d。

输出描述 Output Description

有n行,

排序后从大到小同学的姓名。(需要注意的是如果有两个同学生日相同,输入靠后的同学优先输出)

样例输入 Sample Input

 

3
zhang 1992 4 23
wang 1993 10 13
bai 1991 8 1

样例输出 Sample Output

 

bai
zhang
wang

 

 

 

我的代码:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct stu{
    string s;
    int y,m,d;  
}a[10001];
bool cmp(stu a,stu b)
{
    if(a.y!=b.y){
        return a.y<b.y;
    }   
    if(a.m!=b.m){
        return a.m<a.m;
    }
    if(a.d!=b.d){
        return a.d<b.d;
    }   
    return a.d>b.d;
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
        cout<<a[i].s;
    }
    return 0;
}

只求速速指点!悬赏我可以加


1
已采纳
叶佳萱
叶佳萱
资深守护
资深守护

你sort里要加cmp

 

叶佳萱在2020-01-19 15:30:46追加了内容

还需要注意的是如果有两个同学生日相同,输入靠后的同学优先输出

叶佳萱在2020-01-19 15:33:35追加了内容

老师应该教过的

0
0
朱睿辰
朱睿辰
资深守护
资深守护

排序加上return a.id>b.id

sort加cmp

我要回答