map妙用<int,vector<string>> 以及map的值排序pta(L2-2 懂蛇语)
include<bits/stdc++.h>
using namespace std;
define ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
int n, q;
map<string, vector
string s;
inline string work(string s){
string res = "";
int sz = s.size();
s = " " + s; // 方便首字母判断
for(int i = 1; i <= sz; i ++ )
if(isalpha(s[i]) && s[i - 1] == ' ') res += s[i]; // 前一个时空格的字符为首字母
return res;
}
int main(){
ios;
cin >> n;
cin.ignore();
for(int i = 1; i <= n; i ++ ){
getline(cin, s);
mp[work(s)].emplace_back(s);
}
for(auto &[_, v] : mp) sort(begin(v), end(v)); // 要排序
cin >> q;
cin.ignore();
for(int i = 1; i <= q; i ++ ){
getline(cin, s);
string t = work(s);
if(!mp.count(t)) cout << s << "\n";
else{
int sz = mp[t].size();
for(int i = 0; i < sz; i ++ ){
if(i > 0) cout << "|";
cout << mp[t][i];
}
cout << "\n";
}
}
return 0;
}
浙公网安备 33010602011771号