@[dghcs](/user/142720)
`如果有两个同学生日相同,输入靠后的同学先输出`
by Cczzyy20150005 @ 2022-11-22 20:45:39
所以还要比较输入的顺序
by Cczzyy20150005 @ 2022-11-22 20:46:25
可是我改成这样也会WA
```cpp
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
struct stu{
string name;
int id;
int year;
int month;
int day;
}a[105];
bool cmp(stu a,stu b)
{
if(a.year < b.year)
return true;
else if(a.year == b.year && a.month < b.month)
return true;
else if(a.month == b.month && a.day < b.day)
return true;
else if(a.day == b.day && a.id > b.id)
return true;
else
return false;;
}
int main()
{
int n;cin >> n;
for(int i = 1;i <= n;i++)
{cin >> a[i].name >> a[i].year >> a[i].month >> 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 << endl;
}
```
by dghcs @ 2022-11-22 21:03:06
@[dghcs](/user/142720)
判断函数里面的else if()括号里面也要把之前判断的等于条件加上(例如else if(a.year==b.year && a.month == b.month && a.day < b.day)
Code
```cpp
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
struct stu{
string name;
int id;
int year;
int month;
int day;
}a[105];
bool cmp(stu a,stu b)
{
if(a.year < b.year)
return true;
else if(a.year == b.year && a.month < b.month)
return true;
else if(a.year==b.year && a.month == b.month && a.day < b.day)
return true;
else if(a.year==b.year && a.month == b.month && a.day == b.day && a.id > b.id)
return true;
else
return false;
}
int main()
{
int n;cin >> n;
for(int i = 1;i <= n;i++)
{cin >> a[i].name >> a[i].year >> a[i].month >> 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 << endl;
return 0;
}
```
by Castaways @ 2022-11-27 17:03:31