#include #include #include class Set { private: std::vector vec; Set MergeSet(Set const second, Set const first) { Set tmp; tmp.vec.insert(tmp.vec.end(), second.vec.begin(), second.vec.end()); tmp.vec.insert(tmp.vec.end(), first.vec.begin(), first.vec.end()); return tmp; } int64_t BinSearchPosition(std::vector v, int64_t digit, int64_t left, int64_t right ) { int64_t mid = (left + right) / 2; int64_t Digit_mid = v[mid]; if (digit == Digit_mid) { return -1; } if (left + 1 == right) return mid ? mid + 1 : 0; if (digit > Digit_mid) { return BinSearchPosition(v, digit, mid, right); } else { return BinSearchPosition(v, digit, left, mid); } } int64_t BinSearch_Remove(std::vector v, int64_t digit, int64_t left, int64_t right) { int64_t mid = (left + right) / 2; int64_t Digit_mid = v[mid]; if (digit == Digit_mid) return mid; if (left + 1 == right) { return -1; } if (digit > Digit_mid) { return BinSearch_Remove(v, digit, mid, right); } else { return BinSearch_Remove(v, digit, left, mid); } }