#include <iostream>
#include <map>
#include <string>
#include <vector>
std::vector<std::string> translate(const std::vector<std::string>& v,
const std::map<std::string, std::vector<std::string>>& m)
{
if (v.empty()) {
return {};
}
std::vector<std::string> res = {""};
for (const auto& s : v) {
std::vector<std::string> tmp;
for (const auto& seq : m.at(s)) {
for (const auto& old: res) {
tmp.push_back(old + seq);
}
}
res = std::move(tmp);
}
return res;
}
int main()
{
const std::map<std::string, std::vector<std::string>> mapping = {{"K", {"AAA", "GAA"}}};
for (const auto& s : translate({"K", "K"}, mapping)) {
std::cout << s << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRyYW5zbGF0ZShjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj4mIG0pCnsKICAgIGlmICh2LmVtcHR5KCkpIHsKICAgICAgICByZXR1cm4ge307CiAgICB9CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzID0geyIifTsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHMgOiB2KSB7CiAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRtcDsKCiAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXEgOiBtLmF0KHMpKSB7CiAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb2xkOiByZXMpIHsKICAgICAgICAgICAgICAgIHRtcC5wdXNoX2JhY2sob2xkICsgc2VxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXMgPSBzdGQ6Om1vdmUodG1wKTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCgppbnQgbWFpbigpCnsKICAgIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+IG1hcHBpbmcgPSB7eyJLIiwgeyJBQUEiLCAiR0FBIn19fTsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHMgOiB0cmFuc2xhdGUoeyJLIiwgIksifSwgbWFwcGluZykpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgcyA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K