Pagini recente » Cod sursa (job #3254327) | Cod sursa (job #2631294) | Cod sursa (job #1313575) | Cod sursa (job #1441900) | Cod sursa (job #710891)
Cod sursa(job #710891)
#include<cstdio>
using namespace std;
const int M = 666013; 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);
}
}