@[shooting__star](/user/955954)
```cpp
#include<bits/stdc++.h>
using namespace std;
struct stu{
string name;int y,m,d,id;
} s[105];
int n;
bool cmp(stu a,stu b){
if(a.y==b.y){
if(a.m==b.m){
if(a.d==b.d){
return a.id>b.id;
}
return a.d<b.d;
}
return a.m<b.m;
}
return a.y<b.y;
}
int main(){
cin>>n;for(int i=0;i<n;++i) cin>>s[i].name>>s[i].y>>s[i].m>>s[i].d,s[i].id=i;
sort(s,s+n,cmp);
for(int i=0;i<n;++i) cout<<s[i].name<<endl;
return 0;
}
```
by _buzhidao_ @ 2023-12-02 20:24:56
@[shooting__star](/user/955954) 尽量不要手打排序,直接`sort`函数搞定
by _buzhidao_ @ 2023-12-02 20:25:48
@[shooting__star](/user/955954) 你说你何苦呢?非得手打排序?这题的数据范围sort又不会超时。
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
struct v{
int nian,yue,ri,id;
string ming;
}a[1000000];
bool cmp(v x,v y){
if(x.nian==y.nian&&x.yue==y.yue&&x.ri==y.ri)return x.id>y.id;
if(x.nian==y.nian&&x.yue==y.yue)return x.ri<y.ri;
if(x.nian==y.nian)return x.yue<y.yue;
return x.nian<y.nian;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].ming>>a[i].nian>>a[i].yue>>a[i].ri;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)cout<<a[i].ming<<endl;
return 0;
}
```
by I_am_jocker @ 2023-12-02 20:53:51