Pagini recente » Cod sursa (job #1409982) | Cod sursa (job #1156789) | Rating noname (darius1998) | Cod sursa (job #170952) | Cod sursa (job #1314514)
#include <cstdio>
#define MAX 2000001
using namespace std;
int table[MAX], PMAX = 1999993;
int hashv(int x) {
x = ((x >> 16) ^ x) * 0x45d9f3b;
x = ((x >> 16) ^ x) * 0x45d9f3b;
x = ((x >> 16) ^ x);
return x % PMAX;
}
void add(int val) {
int h = hashv(val);
while(table[h]) h++;
table[h] = val;
}
bool is(int val) {
int h = hashv(val);
while(table[h] && table[h] != val) h++;
if(!table[h])
return false;
return true;
}
void del(int val) {
int h = hashv(val);
while(table[h] && table[h] != val) h++;
if(table[h]) table[h] = -1;
}
int main () {
FILE *in = fopen("hashuri.in", "r");
FILE *out = fopen("hashuri.out", "w");
int n;
fscanf(in, "%d", &n);
int t, val;
for(int i = 0; i < n; i++) {
fscanf(in, "%d %d", &t, &val);
if(t == 1) {
add(val);
}
else if (t == 3) {
if(is(val)) fprintf(out, "1\n");
else fprintf(out, "0\n");
}
else {
del(val);
}
}
return 0;
}