#include <map>
#include <iostream>
using namespace std;
class Person {
public:
void ChangeFirstName(int year, const string& name) {
mname[year] = name;
}
void ChangeLastName(int year, const string& surname) {
msurname[year] = surname;
}
string GetFullName(int year) {
string name, surname;
for (auto n : mname) {
if (n.first <= year)
name = n.second;
else
break;
}
for (auto n : msurname) {
if (n.first <= year)
surname = n.second;
else
break;
}
if (name.empty() && surname.empty()) return "Incognito";
else if (name.empty()) return surname + " with unknown first name";
else if (surname.empty()) return name + " with unknown last name";
return name + " " + surname;
}
private:
map<int, string> mname;
map<int, string> msurname;
};
int main() {
Person person;
person.ChangeFirstName(1965, "Polina");
person.ChangeLastName(1967, "Sergeeva");
for (int year : {1900, 1965, 1990}) {
cout << person.GetFullName(year) << endl;
}
person.ChangeFirstName(1970, "Appolinaria");
for (int year : {1969, 1970}) {
cout << person.GetFullName(year) << endl;
}
person.ChangeLastName(1968, "Volkova");
for (int year : {1969, 1970}) {
cout << person.GetFullName(year) << endl;
}
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUGVyc29uIHsKcHVibGljOgoJdm9pZCBDaGFuZ2VGaXJzdE5hbWUoaW50IHllYXIsIGNvbnN0IHN0cmluZyYgbmFtZSkgewoJCW1uYW1lW3llYXJdID0gbmFtZTsKCX0KCgl2b2lkIENoYW5nZUxhc3ROYW1lKGludCB5ZWFyLCBjb25zdCBzdHJpbmcmIHN1cm5hbWUpIHsKCQltc3VybmFtZVt5ZWFyXSA9IHN1cm5hbWU7Cgl9CgoJc3RyaW5nIEdldEZ1bGxOYW1lKGludCB5ZWFyKSB7CgkJc3RyaW5nIG5hbWUsIHN1cm5hbWU7CgkJZm9yIChhdXRvIG4gOiBtbmFtZSkgewoJCQlpZiAobi5maXJzdCA8PSB5ZWFyKQoJCQkJbmFtZSA9IG4uc2Vjb25kOwoJCQllbHNlCgkJCQlicmVhazsKCQl9CgkJZm9yIChhdXRvIG4gOiBtc3VybmFtZSkgewoJCQlpZiAobi5maXJzdCA8PSB5ZWFyKQoJCQkJc3VybmFtZSA9IG4uc2Vjb25kOwoJCQllbHNlCgkJCQlicmVhazsKCQl9CgkJaWYgKG5hbWUuZW1wdHkoKSAmJiBzdXJuYW1lLmVtcHR5KCkpIHJldHVybiAiSW5jb2duaXRvIjsKCQllbHNlIGlmIChuYW1lLmVtcHR5KCkpIHJldHVybiBzdXJuYW1lICsgIiB3aXRoIHVua25vd24gZmlyc3QgbmFtZSI7CgkJZWxzZSBpZiAoc3VybmFtZS5lbXB0eSgpKSByZXR1cm4gbmFtZSArICIgd2l0aCB1bmtub3duIGxhc3QgbmFtZSI7CgkJcmV0dXJuIG5hbWUgKyAiICIgKyBzdXJuYW1lOwoJfQpwcml2YXRlOgoJbWFwPGludCwgc3RyaW5nPiBtbmFtZTsKCW1hcDxpbnQsIHN0cmluZz4gbXN1cm5hbWU7Cn07CgppbnQgbWFpbigpIHsKICBQZXJzb24gcGVyc29uOwogIAogIHBlcnNvbi5DaGFuZ2VGaXJzdE5hbWUoMTk2NSwgIlBvbGluYSIpOwogIHBlcnNvbi5DaGFuZ2VMYXN0TmFtZSgxOTY3LCAiU2VyZ2VldmEiKTsKICBmb3IgKGludCB5ZWFyIDogezE5MDAsIDE5NjUsIDE5OTB9KSB7CiAgICBjb3V0IDw8IHBlcnNvbi5HZXRGdWxsTmFtZSh5ZWFyKSA8PCBlbmRsOwogIH0KICAKICBwZXJzb24uQ2hhbmdlRmlyc3ROYW1lKDE5NzAsICJBcHBvbGluYXJpYSIpOwogIGZvciAoaW50IHllYXIgOiB7MTk2OSwgMTk3MH0pIHsKICAgIGNvdXQgPDwgcGVyc29uLkdldEZ1bGxOYW1lKHllYXIpIDw8IGVuZGw7CiAgfQogIAogIHBlcnNvbi5DaGFuZ2VMYXN0TmFtZSgxOTY4LCAiVm9sa292YSIpOwogIGZvciAoaW50IHllYXIgOiB7MTk2OSwgMTk3MH0pIHsKICAgIGNvdXQgPDwgcGVyc29uLkdldEZ1bGxOYW1lKHllYXIpIDw8IGVuZGw7CiAgfQogIAogIHJldHVybiAwOwp9