#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 ret = counter_map.insert(std::make_pair(name, counter));
if (ret.second) ++counter;
return ret.first->second;
}
);
for (int i = 0; i < 7; ++i)
std::cout << names[i] << ' ';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKaW50IG1haW4oKXsKCXN0ZDo6c3RyaW5nIG5hbWVzX3N0cls3XSA9IHsiQWxleCIsICJMb3VpcyIsICJBbGV4IiwgIlNpbW9uIiwgIk1hdHRoZXciLCAiQ2FybCIsICJTaW1vbiJ9OwoJaW50IG5hbWVzWzddOwoKCXN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IGNvdW50ZXJfbWFwOwoJaW50IGNvdW50ZXIgPSAwOwoKCXN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4obmFtZXNfc3RyKSwgc3RkOjplbmQobmFtZXNfc3RyKSwgc3RkOjpiZWdpbihuYW1lcyksCgkJWyZdKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSB7CgkJCWF1dG8gcmV0ID0gY291bnRlcl9tYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG5hbWUsIGNvdW50ZXIpKTsKCQkJaWYgKHJldC5zZWNvbmQpICsrY291bnRlcjsKCQkJcmV0dXJuIHJldC5maXJzdC0+c2Vjb25kOwoJCX0KCSk7CgoJZm9yIChpbnQgaSA9IDA7IGkgPCA3OyArK2kpCgkJc3RkOjpjb3V0IDw8IG5hbWVzW2ldIDw8ICcgJzsKCXJldHVybiAwOwp9