Cod sursa(job #244532)

Utilizator stinkyStinky si Grasa stinky Data 15 ianuarie 2009 12:53:48
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>
#define M 213546
struct nod
{
	int info;
	nod*adr;
};

nod * p[M],*u[M];

void init()
{
	for(int i=0;i<M;++i)
	{
		p[i]=new nod;
		p[i]->adr=NULL;
		u[i]=p[i];
	}
}

void adauga(nod* &u,int x)
{
	nod*aux=new nod;
	aux->info=x;
	aux->adr=NULL;
	u->adr=aux;
	u=aux;
}

nod *caut(nod*pr,int x)
{
	while(pr->adr && pr->adr->info!=x)
		pr=pr->adr;
	if(pr->adr)
		return pr;
	return NULL;
}

void sterge(nod*pr,int x)
{
	nod* q=caut(pr,x);
	if(q==NULL)
		return;
	nod*aux=q->adr;
	q->adr=aux->adr;
	delete aux;
}

bool cauta(nod*pr,int x)
{
	if(caut(pr,x))
		return true;
	return false;
}

int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	int n,op,x;
	init();
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&op,&x);
		if(op==1)
			adauga(u[x%M],x);
		if(op==2)
			sterge(p[x%M],x);
		if(op==3)
			printf("%d\n",cauta(p[x%M],x));
	}
	return 0;
}