#include <iostream>
#include <map>
#include <string>
#include <utility>
using namespace std;
template <typename T>
void foo(T& arg) {
const string key = "value"s;
const auto it = arg.find(key);
if(it == arg.end()) {
arg.insert(make_pair(key, 1));
} else {
int prev_value = it->second;
prev_value++;
arg.insert(make_pair(key, prev_value));
}
}
int main() {
map<string, long> whatYouDefined;
foo(whatYouDefined);
cout << "first: " << crbegin(whatYouDefined)->first << " second: " << crbegin(whatYouDefined)->second << endl;
map<string, unsigned int> whatYouThoughtYouDefined;
foo(whatYouThoughtYouDefined);
cout << "first: " << crbegin(whatYouThoughtYouDefined)->first << " second: " << crbegin(whatYouThoughtYouDefined)->second << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dXRpbGl0eT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBmb28oVCYgYXJnKSB7Cgljb25zdCBzdHJpbmcga2V5ID0gInZhbHVlInM7Cgljb25zdCBhdXRvIGl0ID0gYXJnLmZpbmQoa2V5KTsKCQoJaWYoaXQgPT0gYXJnLmVuZCgpKSB7CgkgICAgYXJnLmluc2VydChtYWtlX3BhaXIoa2V5LCAxKSk7Cgl9IGVsc2UgewoJICAgIGludCBwcmV2X3ZhbHVlID0gaXQtPnNlY29uZDsKCSAgICBwcmV2X3ZhbHVlKys7CgkgICAgYXJnLmluc2VydChtYWtlX3BhaXIoa2V5LCBwcmV2X3ZhbHVlKSk7Cgl9Cn0KCmludCBtYWluKCkgewoJbWFwPHN0cmluZywgbG9uZz4gd2hhdFlvdURlZmluZWQ7CgkKCWZvbyh3aGF0WW91RGVmaW5lZCk7CgkKCWNvdXQgPDwgImZpcnN0OiAiIDw8IGNyYmVnaW4od2hhdFlvdURlZmluZWQpLT5maXJzdCA8PCAiIHNlY29uZDogIiA8PCBjcmJlZ2luKHdoYXRZb3VEZWZpbmVkKS0+c2Vjb25kIDw8IGVuZGw7CgkKCW1hcDxzdHJpbmcsIHVuc2lnbmVkIGludD4gd2hhdFlvdVRob3VnaHRZb3VEZWZpbmVkOwoJCglmb28od2hhdFlvdVRob3VnaHRZb3VEZWZpbmVkKTsKCQoJY291dCA8PCAiZmlyc3Q6ICIgPDwgY3JiZWdpbih3aGF0WW91VGhvdWdodFlvdURlZmluZWQpLT5maXJzdCA8PCAiIHNlY29uZDogIiA8PCBjcmJlZ2luKHdoYXRZb3VUaG91Z2h0WW91RGVmaW5lZCktPnNlY29uZCA8PCBlbmRsOwoJCn0=