Advertisement
_takumi

Имена_и_фамилии_2

Aug 15th, 2019
437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class Person {
  5. private:
  6.     map<int, string> fn;
  7.     map<int, string> sn;
  8.     string FirstName(const int &year) {
  9.         string first_name = " with unknown first name";
  10.         for (const pair<int, string> &p : fn) {
  11.             if (p.first <= year)
  12.                 first_name = p.second;
  13.             else
  14.                 break;
  15.         }
  16.         return first_name;
  17.     }
  18.     string LastName(const int &year) {
  19.             string last_name = "with unknown last name";
  20.             for (const pair<int, string> &p : sn) {
  21.                 if (p.first <= year)
  22.                     last_name = p.second;
  23.                 else
  24.                     break;
  25.             }
  26.             return last_name;
  27.         }
  28.     void FirstNameHistory(vector<string> &v) {
  29.         if (fn.size() == 1)
  30.             v.assign(1, " ");
  31.     }
  32. public:
  33.     void ChangeFirstName(const int &year, const string &first_name) {
  34.         fn[year] = first_name;
  35.     }
  36.     void ChangeLastName(const int &year, const string &last_name) {
  37.         sn[year] = last_name;
  38.     }
  39.     string GetFullName(const int &year) {
  40.         if (FirstName(year) == " with unknown first name" && LastName(year) == "with unknown last name")
  41.             return "Incognito";
  42.         if (FirstName(year) == " with unknown first name")
  43.             return LastName(year) + FirstName(year);
  44.         return FirstName(year) + ' ' + LastName(year);
  45.     }
  46.     string GetFullNameWithHistory(const int &year) {
  47.         string s = GetFullName(year);
  48.         if (s == "Incognito")
  49.             return "Incognito";
  50.         if (FirstName(year) == " with unknown first name") {
  51.             s = LastName(year);
  52.             vector<string> v(1, ' ');
  53.             for (pair<int, string> &p : sn) {
  54.                 if (p.first < year)
  55.                     v.push_back(p.second);
  56.             }
  57.             reverse(begin(v), end(v));
  58.             unique(begin(v), end(v));
  59.  
  60.         }
  61.  
  62.     }
  63. };
  64.  
  65. int main() {
  66.   Person person;
  67.   person.ChangeLastName(1960, "Strkova");
  68.   person.ChangeLastName(1961, "Strkova");
  69.   person.ChangeLastName(1962, "Strkov");
  70.   person.ChangeLastName(1963, "Strko");
  71.   person.ChangeLastName(1964, "Strk");
  72.   person.ChangeFirstName(1965, "Polina");
  73.   person.ChangeLastName(1967, "Sergeeva");
  74.   cout << person.GetFullName(1965);
  75.  
  76.   return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement