#include #include class Set { private: const int FlAG_SIZE = 10000000; public: std::vector set; Set() { } Set& operator=(const Set& other) { this->set = other.set; return *this; } Set(const std::vector& v) { std::vector flags(FlAG_SIZE, false); for (int i = 0; i < v.size(); ++i) { if (flags[v[i]] == false) { flags[v[i]] = true; this->set.push_back(v[i]); } } std::sort(this->set.begin(), this->set.end()); } Set Union(const Set& firstSet) { std::vector flags(FlAG_SIZE, false); std::vector newSet; for (int i = 0; i < firstSet.set.size(); ++i) { if (!flags[firstSet.set[i]]) { newSet.push_back(firstSet.set[i]); flags[firstSet.set[i]] = true; } } for (int i = 0; i < this->set.size(); ++i) { if (!flags[this->set[i]]) { newSet.push_back(this->set[i]); flags[this->set[i]] = true; } } std::sort(newSet.begin(), newSet.end()); return { newSet }; } Set Intersection(const Set& firstSet) { std::vector res; for (int i = 0; i < firstSet.set.size(); ++i) { if (std::find(this->set.begin(), this->set.end(), firstSet.set[i]) != this->set.end()) { res.push_back(firstSet.set[i]); } } return { res }; } Set Difference(const Set& firstSet) { std::vector res; for (int i = 0; i < firstSet.set.size(); ++i) { if (std::find(this->set.begin(), this->set.end(), firstSet.set[i]) != this->set.end()) { } else { res.push_back(firstSet.set[i]); } } return { res }; } Set SymmetricDifference(const Set& firstSet) { std::vector res; for (int i = 0; i < firstSet.set.size(); ++i) { if (std::find(this->set.begin(), this->set.end(), firstSet.set[i]) != this->set.end()) { } else { res.push_back(firstSet.set[i]); } } for (int i = 0; i < this->set.size(); ++i) { if (std::find(firstSet.set.begin(), firstSet.set.end(), this->set[i]) != firstSet.set.end()) { } else { res.push_back(this->set[i]); } } return { res }; } void Add(int64_t element) { if (std::find(this->set.begin(), this->set.end(), element) != this->set.end()) { } else { this->set.push_back(element); } } bool Contains(int64_t element) { for (int i = 0; i < this->set.size(); ++i) { if (this->set[i] == element) { return true; } } return false; } void Remove(int64_t element) { for (int i = 0; i < this->set.size(); ++i) { if (this->set[i] == element) { this->set.erase(this->set.begin() + i); } } } vector Data() { return this->set; } void Print() { for (auto var : set) { cout << var << " "; } cout << endl; } };