Pagini recente » Cod sursa (job #84897) | Cod sursa (job #47856) | Cod sursa (job #1859141) | Cod sursa (job #2064320) | Cod sursa (job #2881889)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
const int MOD = 524287; // 2^19 - 1
vector<int> buckets[MOD + 5];
void add(int x) {
int x_bucket = x & MOD;
int i = 0;
while(i < buckets[x_bucket].size() && buckets[x_bucket][i] != x)
i++;
if(i == buckets[x_bucket].size())
buckets[x_bucket].push_back(x);
}
void del(int x) {
int x_bucket = x & MOD;
// il caut pe x in bucket
int i = 0;
while(i < buckets[x_bucket].size() && buckets[x_bucket][i] != x)
i++;
if(i < buckets[x_bucket].size()) {
swap(buckets[x_bucket][i], buckets[x_bucket][ buckets[x_bucket].size() - 1 ]);
buckets[x_bucket].pop_back();
return;
}
}
bool exists(int x) {
int x_bucket = x & MOD;
int i = 0;
while(i < buckets[x_bucket].size() && buckets[x_bucket][i] != x)
i++;
return i < buckets[x_bucket].size();
}
int main() {
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int n, op, x;
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%d %d", &op, &x);
if(op == 1)
add(x);
else if(op == 2)
del(x);
else if(op == 3)
printf("%d\n", exists(x));
}
return 0;
}