Pagini recente » Cod sursa (job #56555) | Cod sursa (job #1337596) | Cod sursa (job #862726) | Cod sursa (job #3263177) | Cod sursa (job #331865)
Cod sursa(job #331865)
#include<stdio.h>
#define MAX_N 798263
#define h(m) (m) & (1<<19)
struct nod
{
int val;
nod* next;
} *nods[MAX_N];
void read(),add(int),del(int);
int exists(int);
int n;
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
read();
fclose(stdin); fclose(stdout);
return 0;
}
void read()
{
int op,x;
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d%d",&op,&x);
switch(op)
{
case 1: add(x); break;
case 2: del(x); break;
case 3: printf("%d\n",exists(x)); break;
}
}
}
int exists(int x)
{
nod* curr = nods[h(x)];
while(curr)
{
if(curr->val == x) return 1;
curr = curr->next;
}
return 0;
}
void del(int x)
{
nod *curr = nods[h(x)];
if(curr && curr->val == x)
{
nods[h(x)] = curr->next;
delete(curr);
}
else
{
for(;curr; curr = curr->next)
{
if(curr->next && curr->next->val == x)
{
nod *tmp = curr->next;
curr->next = tmp->next;
delete(tmp);
break;
}
}
}
}
void add(int x)
{
if(!exists(x))
{
nod* New = new nod;
New->val = x;
New->next = nods[h(x)];
nods[h(x)] = New;
}
}