用了运算符重载,注意不要开O2,要不然全RE
#include <bits/stdc++.h>
using namespace std;
struct stu {
string name;
int year, month, day, num;
friend istream & operator >> ( istream &in, stu &x ) {
cin >> x.name >> x.year >> x.month >> x.day;
}
bool operator < ( stu x ) const {
return (
year < x.year
|| year == x.year && month < x.month
|| year == x.year && month == x.month && day < x.day
|| year == x.year && month == x.month && day == x.day
&& num > x.num
);
}
} a[100];
int n, i, j;
int main() {
cin >> n;
for (i = 0; i < n; i++){
cin >> a[i];
a[i].num = i + 1;
}
for(i = 0;i < n - 1;i++) {
bool b = true;
for(j = n - 1;j >= i + 1;j--)
if ( a[j] < a[j - 1] ){
swap ( a[i], a[j] );
b = false;
}
if( b ) break;
}
for (i = 0; i < n; i++){
cout << a[i].name;
if(i != n - 1)
cout << "\n";
}
return 0;
}
码风很奇怪大家凑活看吧