// 2024 IUSB Programming Competition // Round 2 Problem 1 // Sort Dates // Solution by Liguo Yu #include #include #include using namespace std; int Month2number(string m); int compareMonth(string m1, string m2); int main() { int size; cin >> size; string day[size]; string month[size]; int year[size]; for(int i = 0; i < size; i++) { cin >> day[i] >> month[i] >> year[i]; } for (int i = 0; i < size - 1; i++) { int min_idx = i; for (int j = i + 1; j < size; j++) { if (year[j] < year[min_idx]) { min_idx = j; } else if (year[j] == year[min_idx]) { if (compareMonth(month[j], month[min_idx]) < 0) { min_idx = j; } else if (compareMonth(month[j], month[min_idx]) == 0) { if (day[j].compare(day[min_idx]) < 0) { min_idx = j; } } } } swap(year[min_idx], year[i]); swap(month[min_idx], month[i]); swap(day[min_idx], day[i]); } for(int i = 0; i < size; i++) { cout << day[i] << " " << month[i] << " " << year[i] << endl; } return 0; } int compareMonth(string m1, string m2) { int n1 = Month2number(m1); int n2 = Month2number(m2); if(n1 < n2) return -1; else if (n1 == n2) return 0; else return 1; } int Month2number(string m) { int n = 0; if(m == "Jan") n = 1; else if(m == "Feb") n = 2; else if(m == "Mar") n = 3; else if(m == "Apr") n = 4; else if(m == "May") n = 5; else if(m == "Jun") n = 6; else if(m == "Jul") n = 7; else if(m == "Aug") n = 8; else if(m == "Sep") n = 9; else if(m == "Oct") n = 10; else if(m == "Nov") n = 11; else if(m == "Dec") n = 12; return n; }