Pagini recente » Cod sursa (job #692994) | Cod sursa (job #940645) | Cod sursa (job #3133261) | Cod sursa (job #1646952) | Cod sursa (job #823937)
Cod sursa(job #823937)
#include <stdio.h>
#define rest 666013
struct nod
{
int nr;
nod *urm;
} *v[rest];
nod *Verif(int x)
{
int q=x%rest;
nod *y;
if(v[q])
{
nod *p=v[q];
if(p->nr==x)
return p;
while(p)
{
if(p->nr==x)
return y;
y=p;
p=p->urm;
}
}
return 0;
}
void Stergere(int x)
{
nod *b;
b=Verif(x);
if(!b)
return;
int q=x%rest;
if(b==v[q] && v[q]->nr)
{
v[q] = (v[q]->urm) ? v[q]->urm : NULL;
delete b;
}
else
{
nod *q=b->urm;
b->urm=b->urm->urm;
delete q;
}
}
void Adaugare(int x)
{
nod *p=Verif(x);
if(p)
return;
int q=x%rest;
p=new nod;
p->nr=x;
if(v[q])
p->urm=v[q];
else
p->urm=0;
v[q]=p;
}
int main ()
{
FILE *fin, *fout;
fin=fopen("hashuri.in", "rt");
fout=fopen("hashuri.out", "wt");
int i,n;
fscanf(fin,"%i", &n);
for(i=0;i<n;i++)
{
int a, x;
fscanf(fin, "%i %i",&a, &x);
if(a==1)
Adaugare(x);
else if(a==2)
Stergere(x);
else if(a==3)
fprintf(fout,"%i\n", Verif(x) ? 1 : 0);
}
}