#include <iostream>
#include <map>
class Wrapper
{
public:
Wrapper(std::map<int, std::string>& m, const std::string& s) : m(m), s(s) {}
void operator =(int k) { m[k] = s; }
private:
std::map<int, std::string>& m;
std::string s;
};
class InvertedMap
{
public:
Wrapper operator[](const std::string& s) { return {m, s}; }
auto begin() const { return m.begin(); }
auto end() const { return m.end(); }
private:
std::map<int, std::string> m;
};
int main()
{
InvertedMap Map1;
Map1["Ram"] = 8;
Map1["Aam"] = 8;
Map1["Some"] = 2;
Map1["He"] = 5;
Map1["He"] = 6;
for (const auto& p : Map1) {
std::cout << p.second << " " << p.first << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKY2xhc3MgV3JhcHBlcgp7CnB1YmxpYzoKICAgIFdyYXBwZXIoc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0sIGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSA6IG0obSksIHMocykge30KCiAgICB2b2lkIG9wZXJhdG9yID0oaW50IGspIHsgbVtrXSA9IHM7IH0KcHJpdmF0ZToKICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+JiBtOwogICAgc3RkOjpzdHJpbmcgczsKfTsKCmNsYXNzIEludmVydGVkTWFwCnsKcHVibGljOgogICAgV3JhcHBlciBvcGVyYXRvcltdKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSB7IHJldHVybiB7bSwgc307IH0KCiAgICBhdXRvIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbS5iZWdpbigpOyB9CiAgICBhdXRvIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG0uZW5kKCk7IH0KcHJpdmF0ZToKICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IG07ICAKfTsKCgppbnQgbWFpbigpCnsKICAgSW52ZXJ0ZWRNYXAgTWFwMTsKICAgTWFwMVsiUmFtIl0gPSA4OwogICBNYXAxWyJBYW0iXSA9IDg7CiAgIE1hcDFbIlNvbWUiXSA9IDI7CiAgIE1hcDFbIkhlIl0gPSA1OwogICBNYXAxWyJIZSJdID0gNjsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHAgOiBNYXAxKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IHAuc2Vjb25kIDw8ICIgIiA8PCBwLmZpcnN0IDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQo=