#include <iostream>
#include <string>
#include <map>
#include <algorithm>
int main(){
std::string names_str[7] = {"Alex", "Louis", "Alex", "Simon", "Matthew", "Carl", "Simon"};
int names[7];
std::map<std::string, int> counter_map;
int counter = 0;
std::transform(std::begin(names_str), std::end(names_str), std::begin(names),
[&](const std::string &name) {
auto iter = counter_map.find(name);
if (iter == counter_map.end())
iter = counter_map.insert(std::make_pair(name, counter++)).first;
return iter->second;
}
);
for (int i = 0; i < 7; ++i)
std::cout << names[i] << ' ';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKaW50IG1haW4oKXsKCXN0ZDo6c3RyaW5nIG5hbWVzX3N0cls3XSA9IHsiQWxleCIsICJMb3VpcyIsICJBbGV4IiwgIlNpbW9uIiwgIk1hdHRoZXciLCAiQ2FybCIsICJTaW1vbiJ9OwoJaW50IG5hbWVzWzddOwoKCXN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IGNvdW50ZXJfbWFwOwoJaW50IGNvdW50ZXIgPSAwOwoKCXN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4obmFtZXNfc3RyKSwgc3RkOjplbmQobmFtZXNfc3RyKSwgc3RkOjpiZWdpbihuYW1lcyksCgkJWyZdKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSB7CgkJCWF1dG8gaXRlciA9IGNvdW50ZXJfbWFwLmZpbmQobmFtZSk7CgkJCWlmIChpdGVyID09IGNvdW50ZXJfbWFwLmVuZCgpKQoJCQkJaXRlciA9IGNvdW50ZXJfbWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihuYW1lLCBjb3VudGVyKyspKS5maXJzdDsKCQkJcmV0dXJuIGl0ZXItPnNlY29uZDsKCQl9CgkpOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgNzsgKytpKQoJCXN0ZDo6Y291dCA8PCBuYW1lc1tpXSA8PCAnICc7CglyZXR1cm4gMDsKfQ==