Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- class Person {
- private:
- map<int, string> fn;
- map<int, string> sn;
- string FirstName(const int &year) {
- string first_name = " with unknown first name";
- for (const pair<int, string> &p : fn) {
- if (p.first <= year)
- first_name = p.second;
- else
- break;
- }
- return first_name;
- }
- string LastName(const int &year) {
- string last_name = "with unknown last name";
- for (const pair<int, string> &p : sn) {
- if (p.first <= year)
- last_name = p.second;
- else
- break;
- }
- return last_name;
- }
- void FirstNameHistory(vector<string> &v) {
- if (fn.size() == 1)
- v.assign(1, " ");
- }
- public:
- void ChangeFirstName(const int &year, const string &first_name) {
- fn[year] = first_name;
- }
- void ChangeLastName(const int &year, const string &last_name) {
- sn[year] = last_name;
- }
- string GetFullName(const int &year) {
- if (FirstName(year) == " with unknown first name" && LastName(year) == "with unknown last name")
- return "Incognito";
- if (FirstName(year) == " with unknown first name")
- return LastName(year) + FirstName(year);
- return FirstName(year) + ' ' + LastName(year);
- }
- string GetFullNameWithHistory(const int &year) {
- string s = GetFullName(year);
- if (s == "Incognito")
- return "Incognito";
- if (FirstName(year) == " with unknown first name") {
- s = LastName(year);
- vector<string> v(1, ' ');
- for (pair<int, string> &p : sn) {
- if (p.first < year)
- v.push_back(p.second);
- }
- reverse(begin(v), end(v));
- unique(begin(v), end(v));
- }
- }
- };
- int main() {
- Person person;
- person.ChangeLastName(1960, "Strkova");
- person.ChangeLastName(1961, "Strkova");
- person.ChangeLastName(1962, "Strkov");
- person.ChangeLastName(1963, "Strko");
- person.ChangeLastName(1964, "Strk");
- person.ChangeFirstName(1965, "Polina");
- person.ChangeLastName(1967, "Sergeeva");
- cout << person.GetFullName(1965);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement