Cod sursa(job #679310)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 13 februarie 2012 01:15:36
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>

#define file_in "hashuri.in"
#define file_out "hashuri.out"

#define mod 666013

struct nod{
	
	int val;
	nod * urm;
};

nod * H[mod+10];
int Tip,X,Q;

void inserare(nod *& v, int val){
	
	nod * c=new nod;
	c->val=val;
	c->urm=v;
	v=c;	
}

void stergere(nod *& v, int val){
	
	nod * c,* a;
	if (v->val==val){
		a=v;
		v=v->urm;
		delete a;
	}
	else{
		c=v;
		while (c->urm->val!=val) c=c->urm;
		a=c->urm;
		c->urm=a->urm;
		delete a;
	}
		
}

int cautare(nod * v, int val){
	
	nod * c=v;
	while(c){
		if (c->val==val) return 1;
		c=c->urm;
	}
	
	return 0;
}

int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &Q);
	while(Q--){
		
		scanf("%d %d", &Tip, &X);
		
		if (Tip==1){
			if (!cautare(H[X%mod],X))
			inserare(H[X%mod],X);
		}
		else
		if (Tip==2){
			if (cautare(H[X%mod],X))
			stergere(H[X%mod],X);
		}
		else{
			printf("%d\n", cautare(H[X%mod],X));
		}
	}
	
	return 0;
}