#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<queue>
#include<string>
#include<sstream>
#include<functional>
using namespace std;
void f(string & a){
for (int i = 0; i < a.size(); i++){
if (a[i] >= 'A'&&a[i] <= 'Z')
a[i] = a[i] - 'A' + 'a';
}
}
int main() {
int n,m;
cin >> n>>m;
getchar();
vector<unordered_map<string, int>> mark(n);
vector<string> res(n);
for (int i = 0; i < n; i++){
char cc[1000];
cin.getline(cc, 1000);
res[i] = cc;
stringstream a;
string tmp = cc;
a << tmp;
string tmp2;
while (a >> tmp2){
f(tmp2);
mark[i][tmp2] = 1;
}
}
for (int i = 0; i < m; i++){
char cc[1000];
cin.getline(cc, 1000);
stringstream a;
a << cc;
string tmp2;
vector<int> k(n,0);
int max_num = 0;
int mmm = -1;
unordered_map<string, int> kk;
while (a >> tmp2){
f(tmp2);
if (kk.find(tmp2) != kk.end())
continue;
kk[tmp2] = 1;
for (int i = 0; i < n; i++){
if (mark[i].find(tmp2) != mark[i].end()){
k[i]++;
if (max_num < k[i]){
max_num = k[i];
mmm = i;
}
}
}
}
cout <<res[mmm] << endl;
}
//system("pause");
return 0;
}
忽略上上面定义的一堆头文件和凌乱的变量定义