틀렸습니다.가 계속 뜨는데 왜 뜨는지 이유를 모르겠음.
틀질코 생각을 좀 더 해야함.
비트연산자로 이래이래 쉽게 풀 수 있었다.
어떠한 상태값만을 빼기를 원할 때 remove부분처럼
ret &= ~(1 << n); // remove
ret ^= (1 << n); // toggle
비트를 반전시킨다음에 &연산자를 통해 딱 어떠한 상태값만을 빼버릴 수 있음.
이거 문제였던 부분이 empty랑 all일때는 n을 입력을 받으면 안된다.
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
int n, m, ret;
int main()
{
ios_base::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
cin >> m;
string s;
for (int i = 0; i < m; ++i)
{
cin.clear();
cin >> s;
if ( (s[0] != 'a' && s[1] != 'l') || s[0] != 'e') cin >> n;
if (s[0] == 'a' && s[1] == 'd') ret |= (1 << n);
else if (s[0] == 'r') ret &= ~(1 << n);
else if (s[0] == 'c')
{
int v = (ret & (1 << n)) == 0 ? 0 : 1;
cout << v << endl;
}
else if (s[0] == 't') ret ^= (1 << n);
else if (s[0] == 'a' && s[1] == 'l') ret = (1 << 21) - 1;
else if (s[0] == 'e') ret = 0;
}
return 0;
}