C++ 代码:
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define PII pair<int, int>
using namespace std;
const int maxn = 1e5 + 10, maxm = 1e3 + 10;
int n, m;
unordered_map<string, vector<string>> mp;
unordered_map<string, bool> vis;
void solve()
{
cin >> n;
cin.get();
for (int i = 1; i <= n; i++)
{
string str, s;
bool flag = 1;
getline(cin, str);
for (int i = 0; i < (int)str.size(); i++)
{
if (str[i] == ' ') flag = 1;
else if (flag) s += str[i], flag = 0;
else flag = 0;
}
mp[s].push_back(str);
}
cin >> m;
cin.get();
for (int i = 1; i <= m; i++)
{
string str, s;
bool flag = 1;
getline(cin, str);
for (int i = 0; i < (int)str.size(); i++)
{
if (str[i] == ' ') flag = 1;
else if (flag) s += str[i], flag = 0;
else flag = 0;
}
if (mp[s].empty()) cout << str << endl;
else
{
if (!vis[s]) sort(mp[s].begin(), mp[s].end()), vis[s] = 1;
for (int i = 0; i < (int)mp[s].size(); i++)
{
if (i) cout << '|';
cout << mp[s][i];
}
cout << endl;
}
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t = 1;
// cin >> t;
while (t--) solve();
return 0;
}