Pagini recente » Cod sursa (job #822914) | Monitorul de evaluare | Diferente pentru preoni-2006/runda-3/solutii intre reviziile 25 si 22 | Istoria paginii utilizator/casiopeea88 | Cod sursa (job #1513979)
#include <cstdio>
using namespace std;
const int mod = 3000007;
int v[mod], n, tip, x;
int main () {
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d%d", &tip, &x);
if (tip == 1) {
int pos = -1;
int p = x % mod;
for (int j = 0; ; ++j) {
if (j) {
p += 2 * (j - 1) + 1;
}
if (p >= mod) {
p -= mod;
}
if (v[p] == -1) {
pos = p;
}
if (v[p] == 0) {
v[p] = x;
break;
} else if (v[p] == x) {
break;
}
}
if (pos != -1) {
v[pos] = x;
}
} else if (tip == 2) {
int found = -1;
int p = x % mod;
for (int j = 0; ; ++j) {
if (j) {
p += 2 * (j - 1) + 1;
}
if (p >= mod) {
p -= mod;
}
if (v[p] == x) {
v[p] = -1;
break;
} else if (v[p] == 0) {
break;
}
}
} else if (tip == 3) {
int found = 0;
int p = x % mod;
for (int j = 0; ; ++j) {
if (j) {
p += 2 * (j - 1) + 1;
}
if (p >= mod) {
p -= mod;
}
if (v[p] == x) {
found = 1;
break;
} else if (v[p] == 0) {
break;
}
}
printf("%d\n", found);
}
}
}