Cod sursa(job #249131)

Utilizator andyciupCiupan Andrei andyciup Data 27 ianuarie 2009 17:47:50
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<stdio.h>
#define R 666667
struct nod{
	int info;
	nod*adr;
};
nod *cap[R];
void adaug(int x){
	int jj=x%R;
	nod*aux=new nod;
	aux->info=x;
	aux->adr=cap[jj];
	cap[jj]=aux;
}

void elimin(int x){
	int jj=x%R;
	if(cap[jj]==NULL)
		return;
	nod*copie;
	copie=cap[jj];
	if (copie->info==x){
		cap[jj]=copie->adr;
		delete copie;
		return;
	}
	while((copie->adr)!=NULL){
		if( (copie->adr)->info==x){
			nod* aux=copie->adr;
			copie->adr=(copie->adr)->adr;
			delete aux;
			return;
		}
		else
			copie=copie->adr;
	}
}
void verific(int x){
	int jj=x%R;
	nod *copie;
	copie=cap[jj];
	while(copie!=NULL){
		if(copie->info==x){
			printf("1\n");
			return;
		}
		else copie=copie->adr;
	}
	printf("0\n");
}


int main(){
	freopen("hashuri.in", "r", stdin);
	freopen("hashuri.out", "w", stdout);
	int n;
	scanf("%d", &n);
	short int a;
	int b;
	for(int i=1; i<=n;++i){
		scanf("%hd", &a);
		scanf("%d", &b);
		if(a==1)
			adaug(b);
		if(a==2)
			elimin(b);
		if(a==3)
			verific(b);
	}
	return 0;
}