Pagini recente » Cod sursa (job #1612144) | Cod sursa (job #1814888) | Cod sursa (job #3187938) | Cod sursa (job #2890917) | Cod sursa (job #2967107)
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
#include <stack>
#include <iostream>
#define INF 0x3f3f3f3f
using namespace std;
#ifdef DEBUG
string name = "data";
#else
string name = "hashuri";
#endif
ifstream fin(name + ".in");
ofstream fout(name + ".out");
#define MAXN 4000000
int h[MAXN];
// linear probing
void insert(int x) {
int k = x % MAXN;
for (int i = k; i < MAXN; ++i) {
if (h[i] == 0) {
h[i] = x;
return;
}
}
for (int i = 0; i < k; ++i) {
if (h[i] == 0) {
h[i] = x;
return;
}
}
}
void del(int x) {
int k = x % MAXN;
for (int i = k; i < MAXN; ++i) {
if (h[i] == 0) {
return;
}
if (h[i] == x) {
h[i] = 0;
return;
}
}
for (int i = 0; i < k; ++i) {
if (h[i] == 0) {
return;
}
if (h[i] == x) {
h[i] = 0;
return;
}
}
}
int find(int x) {
int k = x % MAXN;
for (int i = k; i < MAXN; ++i) {
if (h[i] == 0) {
return 0;
}
if (h[i] == x) {
return 1;
}
}
for (int i = 0; i < k; ++i) {
if (h[i] == 0) {
return 0;
}
if (h[i] == x) {
return 1;
}
}
return 0;
}
int main() {
int n;
fin >> n;
for (int i = 0; i < n; ++i) {
int op, x;
fin >> op >> x;
if (op == 1) {
insert(x);
}
if (op == 2) {
del(x);
}
if (op == 3) {
fout << find(x) << "\n";
}
}
return 0;
}