结构体部分还能缩减
```c
#include <bits/stdc++.h>
using namespace std;
int n;
struct node{
string name;
int y,m,d,id;
}a[105];
int cmp(node a,node b)
{
if(a.y!=b.y)
{
return a.y<b.y;
}
else if(a.y==b.y&&a.m!=b.m)
{
return a.m<b.m;
}
else if(a.y==b.y&&a.m==b.m&&a.d!=b.d)
{
return a.d<b.d;
}
else if(a.y==b.y&&a.m==b.m&&a.d==b.d&&a.id!=b.id)
{
return a.id>b.id;
}
}
int main()
{
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+1+n,cmp);
for(int i=1;i<=n;i++)
{
cout<<a[i].name<<endl;
}
return 0;
}
```
by Ilovemywinnie @ 2023-06-03 18:00:52
### 不说废话,直接开始
```cpp
#include<bits/stdc++.h>//~~~懒~~~
using namespace std;
int y[1000],m[1000],d[1000];//出生年y,月m,日d
string s;//姓名s
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>s[i]>>y[i]>>m[i]>>d[i];//输入
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if (y[i]<y[j]||y[i]==y[j]&&m[i]<m[j]||y[i]==y[j]&&m[i]==m[j]&&d[i]<=d[j])//比较
{
swap(s[i],s[j]);//swap为交换函数,即交换s[i]和s[j]
swap(y[i],y[j]);//也可以用结构体进行快排
swap(m[i],m[j]);
swap(d[i],d[j]);
}
for(int i=1;i<=n;i++)
cout<<s[i]<<endl;//输出
return 0;
}
by YGW6 @ 2023-06-03 18:01:32
@[lanmengfei](/user/625711)
by YGW6 @ 2023-06-03 18:02:52
@[YGW6](/user/938950)
你这。。。。。暴力枚举直接O(n^2)是吧....
by lanmengfei @ 2023-06-03 18:22:38
@[lanmengfei](/user/625711)
这是之前打的,懒得改了...但能过
~~主要是嫌麻烦~~
嘻嘻
by YGW6 @ 2023-06-03 20:34:50
@[lanmengfei](/user/625711) 注意**输入靠后的同学先输出**
by dingronghan01 @ 2023-06-17 16:47:09
@[dingronghan01](/user/657904) 哦哦哦谢谢
by lanmengfei @ 2023-06-18 17:33:14