Pagini recente » Cod sursa (job #2208872) | Cod sursa (job #2931330) | Cod sursa (job #3260570) | Cod sursa (job #1938312) | Cod sursa (job #381758)
Cod sursa(job #381758)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NMAX 1000000
#define HMAX 2000000
int H[HMAX];
int A[1000];
int B[1000];
int C[1000];
int N;
int main() {
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
scanf("%d ", &N);
srand(time(0));
int i;
for (i = 1; i < 1000; i++) {
A[i] = rand() % 100000;
B[i] = rand() % 100000;
C[i] = rand() % 100000;
}
for (i = 1; i <= N; i++) {
int op, v;
scanf("%d %d ", &op, &v);
int x1 = v % 1000, x2 = (v / 1000) % 1000, x3 = v / 1000000;
int hval = A[x1] ^ B[x2] ^ C[x3];
bool is_in = false;
if (op == 1) {
for (; H[hval] > 0; hval++) {
if (H[hval] == v) {
is_in = true;
break;
}
}
if (!is_in) {
H[hval] = v;
}
} else if (op == 2) {
for (; H[hval] > 0; hval++) {
if (H[hval] == v) {
H[hval] = 0;
break;
}
}
for (; H[hval + 1] > 0; hval++) {
H[hval] = H[hval + 1];
}
H[hval] = 0;
} else {
for (; H[hval] > 0; hval++) {
if (H[hval] == v) {
is_in = true;
}
}
if (is_in) {
printf("1\n");
} else {
printf("0\n");
}
}
}
return 0;
}