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 > mp;
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;

}

posted on 2025-03-11 14:40  下头小美  阅读(19)  评论(0)    收藏  举报