fork download
  1. #include <map>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Person {
  6. public:
  7. void ChangeFirstName(int year, const string& name) {
  8. mname[year] = name;
  9. }
  10.  
  11. void ChangeLastName(int year, const string& surname) {
  12. msurname[year] = surname;
  13. }
  14.  
  15. string GetFullName(int year) {
  16. string name, surname;
  17. for (auto n : mname) {
  18. if (n.first <= year)
  19. name = n.second;
  20. else
  21. break;
  22. }
  23. for (auto n : msurname) {
  24. if (n.first <= year)
  25. surname = n.second;
  26. else
  27. break;
  28. }
  29. if (name.empty() && surname.empty()) return "Incognito";
  30. else if (name.empty()) return surname + " with unknown first name";
  31. else if (surname.empty()) return name + " with unknown last name";
  32. return name + " " + surname;
  33. }
  34. private:
  35. map<int, string> mname;
  36. map<int, string> msurname;
  37. };
  38.  
  39. int main() {
  40. Person person;
  41.  
  42. person.ChangeFirstName(1965, "Polina");
  43. person.ChangeLastName(1967, "Sergeeva");
  44. for (int year : {1900, 1965, 1990}) {
  45. cout << person.GetFullName(year) << endl;
  46. }
  47.  
  48. person.ChangeFirstName(1970, "Appolinaria");
  49. for (int year : {1969, 1970}) {
  50. cout << person.GetFullName(year) << endl;
  51. }
  52.  
  53. person.ChangeLastName(1968, "Volkova");
  54. for (int year : {1969, 1970}) {
  55. cout << person.GetFullName(year) << endl;
  56. }
  57.  
  58. return 0;
  59. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Incognito
Polina with unknown last name
Polina Sergeeva
Polina Sergeeva
Appolinaria Sergeeva
Polina Volkova
Appolinaria Volkova