0
已解决
邵悦媛
新手光能
新手光能
题目详情
提交记录
问题反馈
1332 调查年龄经验值:0
题目描述 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
我的85分代码:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
struct stu{
string name;
long long y;
long long m;
long long d;
long long f;
}a[110010];
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.f<b.f;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
a[i].f=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
cout<<a[i].name<<endl;
}
return 0;
}
快速!