Pagini recente » Cod sursa (job #2624768) | Cod sursa (job #854869) | Cod sursa (job #1777357) | Cod sursa (job #2829798) | Cod sursa (job #713363)
Cod sursa(job #713363)
#include<cstdio>
using namespace std;
const int M = 1999993; int H[M];
int h(int x, int i){
return (x % M + i * (1 + x % (M - 1))) % M;
}
int Cauta(int x){
int i, ind;
for (i = 0; i < M; i++){
ind = h(x, i);
if (H[ind] == 0) return -1;
if (H[ind] == x) return ind;
}
}
void Insereaza(int x){
int i, ind;
if (Cauta(x) == -1)
for (i = 0; i < M; i++){
ind = h(x, i);
if (H[ind] <= 0) {H[ind] = x; return;}
}
}
void Sterge(int x){
int ind = Cauta(x);
if (ind != -1) H[ind] = -1;
}
int main(){
freopen ("hashuri.in", "r", stdin), freopen("hashuri.out", "w", stdout);
int i, n, x, op;
scanf("%d", &n);
for (i = 0; i < n; i++){
scanf("%d %d", &op, &x);
if (op == 1) Insereaza(x);
if (op == 2) Sterge(x);
if (op == 3) printf("%d\n", Cauta(x) == -1 ? 0 : 1);
}
}