Cod sursa(job #371423)

Utilizator EugenStoicaEugen Stoica EugenStoica Data 5 decembrie 2009 12:54:55
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#include<stdlib.h>
#define NM 1000005
#define D 1000003

struct nod
{
	int x;
	nod *next;
};

nod *v[NM];

int makehash(int x)
{
return x%D;
}

void addnod(int x)
{
int r=makehash(x);
nod *nn=new nod;
nn->x=x;
nn->next=v[r];
v[r]=nn;
}

nod* search(int x)
{
int r=makehash(x);
nod *nc=v[r];
while(nc&&nc->x!=x)	nc=nc->next;
return nc;
}

void sterge(int x)
{
nod *nc=search(x);
if(nc)nc->x=0;
}

int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int i,n,op,x;
char sir[20],*p;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
	{
	fgets(sir,19,stdin);
	p=sir;
	op=atoi(p);
	p+=2;
	x=atoi(p);
	switch(op)
		{
		case 1:
			if(!search(x))addnod(x);
			break;
		case 2:
			sterge(x);
			break;
		case 3:
    	printf("%d\n",search(x)>0);
		}
	}
return 0;
}