Pagini recente » Cod sursa (job #595398) | Cod sursa (job #3182774) | Cod sursa (job #1358691) | Cod sursa (job #39051) | Cod sursa (job #2121812)
#include <cstdio>
#include <vector>
#include <algorithm>
#define MOD 666013
using std::vector;
using std::binary_search;
int n;
vector<int> hashTable[MOD];
inline void get(int x) {
binary_search(
hashTable[x % MOD].begin(), hashTable[x % MOD].end(),
x
) ? printf("1\n") : printf("0\n");
}
void add(int x) {
int y = x % MOD;
int m, st = -1, dr = hashTable[y].size();
while (dr - st > 1) {
m = (st + dr) / 2;
if (x > hashTable[y][m])
st = m;
else if (x < hashTable[y][m])
dr = m;
else
return;
}
hashTable[y].insert(hashTable[y].begin() + dr, x);
}
void del(int x) {
int y = x % MOD;
int m, st = -1, dr = hashTable[y].size();
while (dr - st > 1) {
m = (st + dr) / 2;
if (x > hashTable[y][m])
st = m;
else if (x < hashTable[y][m])
dr = m;
else {
hashTable[y].erase(hashTable[y].begin() + m, hashTable[y].begin() + m + 1);
return;
}
}
}
int main() {
int type, val;
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
scanf("%d\n", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d\n", &type, &val);
if (type == 1)
add(val);
else if (type == 2)
del(val);
else
get(val);
}
fclose(stdout);
return 0;
}