Pagini recente » Cod sursa (job #2440132) | infoarena - te ajutam sa devii olimpic! | Cod sursa (job #3281981) | Cod sursa (job #2044364) | Cod sursa (job #1587967)
#include <fstream>
#include <unordered_set>
#include <bitset>
using namespace std;
const int BITS = 8;
const int MASK = (1 << BITS) - 1;
bitset <1 << BITS> T[3][1 << BITS];
unordered_set <int> lazyErase;
void m_insert(int X) {
for (int bucket = 0; bucket < 3; bucket++) {
T[bucket][X & MASK][(X >> BITS) & MASK] = 1;
X >>= BITS;
}
}
bool m_find(int X) {
int bucket = 0;
while (bucket < 3 && T[bucket][X & MASK][(X >> BITS) & MASK]) {
X >>= BITS;
bucket++;
}
return (bucket == 3);
}
int main() {
ifstream in("hashuri.in");
in.tie(0);
ios_base::sync_with_stdio(false);
ofstream out("hashuri.out");
int Q;
int opType, arg;
in >> Q;
while (Q--) {
in >> opType >> arg;
if (opType == 1) {
m_insert(arg);
lazyErase.erase(arg);
} else if (opType == 2) {
lazyErase.insert(arg);
} else {
if (lazyErase.find(arg) == lazyErase.end() && m_find(arg)) {
out << "1\n";
} else {
out << "0\n";
}
}
}
in.close();
out.close();
return 0;
}