额,还是排序。。。
by _rzm120412_ @ 2023-09-09 11:26:34
直接给代码行吗
```cpp
#include <bits/stdc++.h>
using namespace std;
struct Node{
string s;
int y,m,d,num;
}a[110];
bool cmp(Node n1,Node n2){
if(n1.y<n2.y||n1.y==n2.y&&n1.m<n2.m||n1.y==n2.y&&n1.m==n2.m&&n1.d<n2.d||n1.y==n2.y&&n1.m==n2.m&&n1.d==n2.d&&n1.num>n2.num) return true;
else return false;
}
int n,i;
int main(){
cin>>n;
for(i=0;i<n;i++){
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
a[i].num=i+1;
}
sort(a,a+n,cmp);
for(i=0;i<n;i++){
cout<<a[i].s<<endl;
}
return 0;
}
```
by Amberhart @ 2023-09-09 11:29:58
@[liyirong567](/user/955954)
by Amberhart @ 2023-09-09 11:31:51
查到一处错误,然后代码变成了这样:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct student{
int flag=0;
int year;
int month;
int day;
string name;
}a[105];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].name>>a[i].year>>a[i].month>>a[i].day;
}
for(int j=0;j<n;j++){
for(int i=1;i<n;i++){
if(a[i].year<a[i-1].year){
swap(a[i],a[i-1]);
}
else if(a[i].year==a[i-1].year&&a[i].month<a[i-1].month){
swap(a[i],a[i-1]);
}
else if(a[i].year==a[i-1].year&&a[i].month==a[i-1].month&&a[i].day<a[i-1].day){
swap(a[i],a[i-1]);
}
else if(a[i].year==a[i-1].year&&a[i].month==a[i-1].month&&a[i].day==a[i-1].day&&a[i].flag==0||a[i-1].flag==0){
swap(a[i],a[i-1]);
a[i].flag=1;
a[i-1].flag=1;
}
}
}
for(int i=0;i<n;i++){
cout<<a[i].name<<endl;
}
return 0;
}
```
by shooting__star @ 2023-09-09 11:31:54
```cpp
#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,m;
struct node{
string name;
int y,m,d,bian;
}a[1001];
int cmp(node x,node y){
return x.y<y.y||x.y==y.y&&x.m<y.m||x.y==y.y&&x.m==y.m&&x.d<y.d||x.y==y.y&&x.m==y.m&&x.d==y.d&&x.bian>y.bian;
}
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
a[i].bian=i;
}
sort(a+1,a+1+n,cmp);
for(i=1;i<=n;i++)
cout<<a[i].name<<endl;
return 0;
}
```
好力,写完了
by _rzm120412_ @ 2023-09-09 11:32:02
@[liyirong567](/user/955954) 这边建议写$cmp$代码短一点
by _rzm120412_ @ 2023-09-09 11:33:41
@[liyirong567](/user/955954) 解决了吗?
by _rzm120412_ @ 2023-09-09 11:36:36