Pagini recente » Cod sursa (job #115120) | Cod sursa (job #2249790) | Cod sursa (job #3240899) | Cod sursa (job #3222007) | Cod sursa (job #344542)
Cod sursa(job #344542)
/*
liste inlantuite implementate de mana. se vede clar diferenta de memorie dintre
folosirea vectorilor din STL: http://infoarena.ro/job_detail/342999 si cele "manuale"
*/
#include <cstdio>
#define MOD 666013
struct adr
{
int val;
adr *urm;
} *L[MOD];
void insert(int x)
{
int nr=x%MOD;
adr *p=new adr;
p->val=x; p->urm=L[nr];
L[nr]=p;
}
int query(int x)
{
int nr=x%MOD;
adr *p;
for (p=L[nr]; p && p->val!=x; p=p->urm);
return p!=NULL;
}
void erase(int x)
{
int nr=x%MOD;
adr *p,*t;
for (t=p=L[nr]; p->val!=x; p=p->urm) t=p;
if (t==p)
{
t=L[nr];
L[nr]=L[nr]->urm;
delete t;
return;
}
t->urm=p->urm;
delete p;
}
int main()
{
int n,op,x;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
while (n--)
{
scanf("%d%d",&op,&x);
switch (op)
{
case 1:if (!query(x)) insert(x); break;
case 2:if (query(x)) erase(x); break;
case 3:printf("%d\n",query(x)); break;
}
}
return 0;
}