Pagini recente » Cod sursa (job #734904) | Cod sursa (job #801500) | Cod sursa (job #2594701) | Cod sursa (job #449694) | Cod sursa (job #265155)
Cod sursa(job #265155)
#include <iostream>
#define p 181081
using namespace std;
struct NOD
{
int val;
struct NOD *next;
};
void add (int);
void remove (int);
void search (int);
NOD* list[p];
int n;
int main()
{
int i, op, x;
freopen ("hashuri.in", "r", stdin);
freopen ("hashuri.out", "w", stdout);
cin >> n;
for (i = 1; i <= n; i++)
{
cin >> op >> x;
if (op == 1)
{
add (x);
}
else if (op == 2)
{
remove (x);
}
else
{
search (x);
}
}
return 0;
}
void search (int x)
{
NOD *t;
t = list[x%p];
while (t)
{
if (t->val == x)
{
cout << "1\n";
return;
}
t = t->next;
}
cout << "0\n";
}
void remove (int x)
{
NOD *t, *u;
if (!list[x%p])
{
return;
}
else
{
t = list[x%p];
if (t->val == x)
{
list[x%p] = t->next;
delete t;
}
else
{
u = t;
while (1)
{
if (!t->next) return;
t = t->next;
if (t->val == x)
{
u->next = t->next;
delete t;
return;
}
u = t;
}
}
}
}
void add (int x)
{
NOD *t;
if (!list[x%p])
{
list[x%p] = new NOD;
t = list[x%p];
t->val = x;
t->next = 0;
}
else
{
t = list[x%p];
while (1)
{
if (t->val == x)
{
return;
}
else
{
if (t->next)
{
t = t->next;
}
else
{
t->next = new NOD;
t = t->next;
t->val = x;
t->next = NULL;
}
}
}
}
}