Cod sursa(job #245663)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 18 ianuarie 2009 15:18:13
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<stdio.h>  
#define N 214365  

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=NULL;
		v[i]=p[i];
	}
}

void adauga(nod* &v,int x){
	nod *aux=new nod;
	aux->info=x;
	aux->adr=NULL;
	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 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;
}

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(p[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;
}