太复杂了
```cpp
#include<bits/stdc++.h>
using namespace std;
struct node{
string name;
int year,mon,day,id;
};
node a[105];
int n;
bool cmp(node x,node y){
if(x.year!=y.year){
return x.year<y.year;
}
if(x.mon!=y.mon){
return x.mon<y.mon;
}
if(x.day==y.day && x.mon==y.mon){
return x.id>y.id;
}
return x.day<y.day;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].year>>a[i].mon>>a[i].day;
a[i].id=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<"\n";
}
return 0;
}
```
这么做好一些
by Locus_ybl @ 2021-10-19 22:01:20
@[liurongxuan2009](/user/490944) 谢dalao,已AC.
by dlmm @ 2021-10-19 22:07:17
第14行错了,附上极具缩短版:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct stu{
string name;
int y,m,d,n;
}arr[110];
bool cmp(stu a,stu b){
return a.y==b.y?a.m==b.m?a.d==b.d?a.n>b.n:a.d<b.d:a.m<b.m:a.y<b.y;
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
cin>>arr[i].name>>arr[i].y>>arr[i].m>>arr[i].d;
arr[i].n=i;
}
sort(arr+1,arr+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<arr[i].name<<endl;
}
return 0;
}
```
by blow @ 2021-10-19 22:18:28
@[dlmm](/user/361712)
by blow @ 2021-10-20 20:33:41
@[shiyifan0822](/user/545610) 谢谢关心,已经修改正确并AC。
by dlmm @ 2021-10-20 21:35:55