56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
constexpr size_t MAX_N = 100005, MAX_DIGITS = 16;
|
|
|
|
int n, m;
|
|
int bits[MAX_DIGITS];
|
|
|
|
void print_bits(ostream& os = clog) {
|
|
for (const int bit : bits) { os << bit; }
|
|
os << endl;
|
|
}
|
|
|
|
void update_bits(const int num) {
|
|
for (int i = 0; i < MAX_DIGITS; i++) {
|
|
bits[i] += (num >> i) & 1;
|
|
}
|
|
}
|
|
|
|
void add(int num) {
|
|
for (int i = 0; i < MAX_DIGITS; i++) {
|
|
const bool current_bit = num & 1;
|
|
num >>= 1;
|
|
if (current_bit == 0) { continue; }
|
|
num += bits[i];
|
|
bits[i] = n - bits[i];
|
|
print_bits();
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
ios::sync_with_stdio(false);
|
|
cin.tie(nullptr);
|
|
|
|
cin >> n >> m;
|
|
for (int _ = 0; _ < n; _++) {
|
|
int num;
|
|
cin >> num;
|
|
update_bits(num);
|
|
}
|
|
for (int _ = 0; _ < m; _++) {
|
|
print_bits();
|
|
char op;
|
|
int x;
|
|
cin >> op >> x;
|
|
if (op == 'Q') {
|
|
cout << bits[x] << endl;
|
|
} else {
|
|
add(x);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|