
这道题我用 map 来做,莫名 Wrong Answer,请问呢是什么原因?
#include <bits/stdc++.h>
using namespace std;
int n;
struct Date{
int m, d;
inline bool operator<(const Date da)const{
if (m == da.m) return d < da.d;
return m < da.m;
}
}d;
inline bool cmp(string a, string b){
if (a.size() == b.size()) return a < b;
return a.size() < b.size();
}
map<Date, vector<string>> mp;
vector<string> vec;
string name;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i=1; i<=n; i++){
cin >> name >> d.m >> d.d;
mp[d].push_back(name);
}
for (auto it=mp.begin(); it!=mp.end(); it++){
d = (*it).first;
vec = (*it).second;
if (vec.empty()) continue;
cout << d.m << ' ' << d.d << ' ';
sort(vec.begin(), vec.end(), cmp);
for (auto it2=vec.begin(); it2!=vec.end(); it2++) cout << (*it2) << ' ';
cout << '\n';
}
return 0;
}