Cod sursa(job #245665)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 18 ianuarie 2009 15:29:31
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<stdio.h>  
#define N 436587
#define w NULL

struct nod{
	int info;
	nod *adr;
};

nod *v[N],*p[N];

void init(){
	for(int i=0;i<N;++i){
		p[i]=new nod;
		p[i]->adr=w;
		v[i]=p[i];
	}
}

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

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

void sterge(int nr,int x){
	nod *pr=p[nr];
	nod *r=caut(pr,x);
	if(r==w)
		return;
	nod *aux=r->adr;
	r->adr=aux->adr;
	if(aux->adr==w)
		v[nr]=r;
	delete aux;
}

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

void citire(){
	int n,op,x;
	init();
	scanf("%d",&n);
	while(n--){
		scanf("%d%d",&op,&x);
		if(op==1)
			adauga(v[x%N],x);
		if(op==2)
			sterge(x%N,x);
		if(op==3)
			printf("%d\n",cauta(p[x%N],x));
	}
}

int main(){
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	citire();
	fclose(stdin);
	fclose(stdout);
	return 0;
}