//算法思路:先构建库,然而切分,再次构建Map,最后读取。
//substr(0,2) 取出子串 而且是双闭区间!!
//fgets(line,200,stdin) 读入了 \n 换行符
//fgets后面用 line1.pop_back() 去掉最后的\n
/*
1.输入 int n,后面读字符串,赶紧用 getchar(); 读取\n
2. 字符串比较 == 用“ ” 重要:如果是line[0]则比较的 是 ' ' 字符串!!!
3.这个代码 需要部分,部分调试
*/
#include<map>
#include<string>
#include<cstdio>
using namespace std;
int main() {
map<string,string>dict; //魔咒---功能
while(true){ //库
char magic[200];
fgets(magic, 200, stdin);
string cmagic= magic;
cmagic.pop_back();
if(cmagic=="@END@"){
break;
}
else {
string cmagic2 = cmagic.substr(0,cmagic.find(']')+1); //魔咒
string cmagic3 = cmagic.substr(cmagic.find(']' )+ 2); //功能
dict[cmagic2]=cmagic3;
dict[cmagic3]=cmagic2;
}
}
int n;
scanf("%d",&n);
getchar();
for(int i = 0 ;i<n;i++){
char line[200];
fgets(line,200,stdin);
string line1 = line;
line1.pop_back();
if(dict.find(line1) != dict.end()){ //存在某个功能或者咒语: dict是map,magic2,3
if(line[0] == '[' ){ //咒语!
printf("%s\n",dict[line1].c_str());
}
else{
printf("%s\n",dict[line1].substr(1,dict[line1].find(']')-1).c_str());
}
}
else{printf("what?\n");}
}
}