#include <cstdint>
#include <cstdio>
// Register abstraction (USER MUST MODIFY THIS CLASS ONLY)
class Register32 {
private:
std::uint32_t value;
public:
Register32(int val=0) : value(val) {}
Register32& operator|=(int mask) {
// Return a new object with the sum
value = value | mask;
return *this;
}
Register32& operator&=(int mask) {
// Return a new object with the sum
value = value & mask;
return *this;
}
std::uint32_t get() const {
return value;
}
};
int main() {
Register32 reg{0};
int n;
std::scanf("%d", &n);
for (int i = 0; i < n; ++i) {
char op[6];
int bit;
std::scanf("%s %d", op, &bit);
// MUST REMAIN UNCHANGED
if (op[0] == 'S') {
reg |= (1u << bit);
} else {
reg &= ~(1u << bit);
}
}
std::printf("reg=%u\n", reg.get());
return 0;
}
Input
3 SET 0 SET 3 CLEAR 0
Expected Output
reg=8