0
已解决
王月
资深守护
资深守护
4572 年龄排序
经验值:800 时间限制:1000毫秒
题目描述 Description
小明帮老师统计班上同学的出生日期,并根据年龄给同学们排序。统计的出生日期格式为六位数字,例如,某同学是1998-9-30日出生的,那么统计的格式就是98 9 30。请你编写一个程序,请按照他们年龄从小到大排序,年龄相同的按照输入的顺序先后来排序。
输入描述 Input Description
n+1行,第一行一个整数n,表示统计的人数
接下来n行,每行一个字符串和三个二位整数组成的数(0省略),中间通过空格隔开
输出描述 Output Description
n行,每行一个字符串,表示排序后姓名
样例输入 Sample Input
3 xiaoming 98 9 30 xiaohong 97 7 20 xiaohua 98 9 29
样例输出 Sample Output
xiaoming xiaohua xiaohong
数据范围及提示 Data Size & Hint
0<n<=100
所有同学的出生日期都在2000年1月1号之前
不会啊
在线等,挺急的
xdm加油冲冲冲!(doge
0
已采纳
李奕歌
初级天翼
初级天翼
核心:
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<"\n";
}
struct sr{
string name;
long long y;
int m,d,id;
};
sr a[10005];
bool cmp(sr x,sr y){
if(x.y!=y.y) return x.y>y.y;
if(x.m!=y.m) return x.m>y.m;
if(x.d!=y.d) return x.d>y.d;
return x.id<y.id;
}
0