#include #include class Set{ public: std :: vector c; Set( const std :: vector& other) { this->c = other; } void Add(int64_t value) { if(!this->Contains(value)) this->c.push_back(value); } void Remove(int64_t value) { int i; for(i = 0; i < this->c.size(); i++) { if(this->c[i] == value) break; } int64_t c = this->c[i]; this->c[i] = this->c[this->c.size()-1]; this->c[this->c.size()-1] = c; this->c.pop_back(); } bool Contains(int64_t value) const { int i; for(i = 0; i < this->c.size(); i++) { if(value == this->c[i]) return true; } return false; } Set Union(const Set& other) const { Set NewSet(this->c); for(int i = 0; i < other.c.size(); i++) { NewSet.c.push_back(other.c[i]); } return NewSet; } Set Intersection(const Set& other) const { std :: vector NewVector; for(int i = 0; i < this->c.size(); i++){ for(int j = 0; j < other.c.size(); j++) if(this->c[i]==other.c[j]) NewVector.push_back(this->c[i]); } Set NewSet(NewVector); return NewSet; } Set Difference(const Set& other) const { std :: vector NewVector; for(int i = 0; i < this->c.size(); i++){ for(int j = 0; j < other.c.size(); j++) if(this->c[i]!=other.c[j]) NewVector.push_back(this->c[i]); } Set NewSet(NewVector); return NewSet; } Set SymmetricDifference(const Set& other) const { std :: vector NewVector; for(int i = 0; i < this->c.size(); i++){ for(int j = 0; j < other.c.size(); j++) if(this->c[i]!=other.c[j]) NewVector.push_back(this->c[i]); } for(int j = 0; j < other.c.size(); j++){ for(int i = 0; i < this->c.size(); i++) if(other.c[j] != this->c[i]) NewVector.push_back(other.c[j]); } Set NewSet(NewVector); return NewSet; } std :: vector Data() const { std :: vector NewVector; NewVector = this->c; return NewVector; } };