0
已解决
邓涵睿
中级天翼
中级天翼
年龄排序
题目详情
题目描述 Description
输入n个人的姓名和出生日期(格式 :xx xx xx),请按照他们年龄(从出生至今经过多长时间)从小到大排序,年龄相同的按照输入的顺序(靠前的先输出)来排序。
输入描述 Input Description
输入n+1行,
第一行,一个正整数n;
接下来n行,每行输入一个人的姓名、出生日期(年、月、日),用空格隔开。
输出描述 Output Description
输出排好序的n个人姓名,用空格隔开
样例输入 Sample Input
2 xiaohong 1997 09 20 xiaoming 1998 08 01
样例输出 Sample Output
xiaoming xiaohong
数据范围及提示 Data Size & Hint
1<n<=1000,出生日期1990-2019
@李显晨
帮我一下,200豆
邓涵睿在2020-11-05 17:41:13追加了内容
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct d{
string name;
int A,B,C;
}a[60];
bool cmp(d x,d y){
if(x.A!=y.A) return x.A<y.A;
if(x.B!=y.B) return x.B<y.B;
if(x.C!=y.C) return x.C<y.C;
return x>y;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].A>>a[i].B>>a[i].C;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name;
}
return 0;
}
0
已采纳
李显晨
中级启示者
中级启示者
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct d{
string name;
int A,B,C,pos;
}a[1010];
bool cmp(d x,d y){
if(x.A!=y.A) return x.A>y.A;
if(x.B!=y.B) return x.B>y.B;
if(x.C!=y.C) return x.C>y.C;
return x.pos<y.pos;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].A>>a[i].B>>a[i].C;
a[i].pos=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<" ";
}
return 0;
}
0
0
0