#include <algorithm>
#include <iostream>
#include <functional>
#include <map>
#include <vector>
using namespace std;
class translate {
const map<vector<int>, char, function<bool(const vector<int>&, const vector<int>&)>> dictionary;
public:
translate() : dictionary({ { { 1, 2, 3, 4, 5 }, 'a' }, { { 5, 3, 7, 1 }, 'b' }, { { 3, 2, 5, 6, 8, 9, 0 }, 'z' } }, [](const auto& lhs, const auto& rhs){
const auto its = mismatch(cbegin(lhs), cend(lhs), cbegin(rhs), cend(rhs));
return its.second != cend(rhs) && (its.first == cend(lhs) || *its.first < *its.second); }) {}
char mapping(const vector<int>& key) {
const auto it = dictionary.find(key);
return it == cend(dictionary) ? '\0' : it->second;
}
};
int main() {
translate foo;
cout << foo.mapping({ 1, 2, 3, 4, 5 }) << endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyB0cmFuc2xhdGUgewoJY29uc3QgbWFwPHZlY3RvcjxpbnQ+LCBjaGFyLCBmdW5jdGlvbjxib29sKGNvbnN0IHZlY3RvcjxpbnQ+JiwgY29uc3QgdmVjdG9yPGludD4mKT4+IGRpY3Rpb25hcnk7CnB1YmxpYzoKCXRyYW5zbGF0ZSgpIDogZGljdGlvbmFyeSh7IHsgeyAxLCAyLCAzLCA0LCA1IH0sICdhJyB9LCB7IHsgNSwgMywgNywgMSB9LCAnYicgfSwgeyB7IDMsIDIsIDUsIDYsIDgsIDksIDAgfSwgJ3onIH0gfSwgW10oY29uc3QgYXV0byYgbGhzLCBjb25zdCBhdXRvJiByaHMpewogICAgICAgIGNvbnN0IGF1dG8gaXRzID0gbWlzbWF0Y2goY2JlZ2luKGxocyksIGNlbmQobGhzKSwgY2JlZ2luKHJocyksIGNlbmQocmhzKSk7CgogICAgICAgIHJldHVybiBpdHMuc2Vjb25kICE9IGNlbmQocmhzKSAmJiAoaXRzLmZpcnN0ID09IGNlbmQobGhzKSB8fCAqaXRzLmZpcnN0IDwgKml0cy5zZWNvbmQpOyB9KSB7fQogICAgY2hhciBtYXBwaW5nKGNvbnN0IHZlY3RvcjxpbnQ+JiBrZXkpIHsKICAgIAljb25zdCBhdXRvIGl0ID0gZGljdGlvbmFyeS5maW5kKGtleSk7CiAgICAJCiAgICAJcmV0dXJuIGl0ID09IGNlbmQoZGljdGlvbmFyeSkgPyAnXDAnIDogaXQtPnNlY29uZDsKICAgIH0KfTsKCmludCBtYWluKCkgewoJdHJhbnNsYXRlIGZvbzsKCQoJY291dCA8PCBmb28ubWFwcGluZyh7IDEsIDIsIDMsIDQsIDUgfSkgPDwgZW5kbDsKfQ==