Pagini recente » Cod sursa (job #499033) | Cod sursa (job #2649293) | Cod sursa (job #1083115) | Cod sursa (job #1821587) | Cod sursa (job #823890)
Cod sursa(job #823890)
#include <stdio.h>
#include <conio.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]=v[q]->urm;
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)
{
nod *b=Verif(x);
fprintf(fout,"%i\n", b!=NULL ? 1 : 0);
}
}
}