问题标题: 酷町堂:6705

0
0
已解决
李奕歌
李奕歌
初级天翼
初级天翼

题目描述 Description

酷町猫想统计小伙伴们的生日,并且按照从大到小的顺序排序。请你编程实现。

输入描述 Input Description

有2行,
第1行为酷町猫小伙伴总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。

输出描述 Output Description

有n行,

即n个生日从大到小小伙伴的姓名。(如果有两个小伙伴生日相同,输入靠后的小伙伴先输出)

样例输入 Sample Input

3 Yangchu 1992 4 23 Qiujingya 1993 10 13 Luowen 1991 8 1

样例输出 Sample Output

Luowen Yangchu Qiujingya

数据范围及提示 Data Size & Hint

1<n<100

length(s)<20

WA 0:

#include<bits/stdc++.h>
using namespace std;
struct sr{
    string name;
    long long y;
    int m,d;
};
sr a[105];
bool cmp(sr a,sr b){
    if(a.y==b.y)
    return a.m>a.m;
    if(a.y==b.y&&a.m==b.m)
    return a.d>b.d;
    return a.y>b.y;
}
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i].name<<"\n";
    }
    return 0;
}

 


0
已采纳
王文博
王文博
缔造者之神
缔造者之神

就是一个结构体排序

核心:(cmp函数,b为年,c为月,d为日,id为先后顺序)

bool cmp(stu x,stu y)
{
    if(x.b!=y.b) ret**n x.b<y.b;
    if(x.c!=y.c) ret**n x.c<y.c;
    if(x.d!=y.d) ret**n x.d<y.d;
    ret**n x.id>y.id;
}

望采纳!

0
0
张展嘉
张展嘉
新手天翼
新手天翼

它和1150,短信计费是一样的

0
0
我要回答