Cod sursa(job #280715)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 13 martie 2009 15:33:19
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
//hashuri bc

#include <stdio.h>
#define mod 666013

struct nod {int inf; nod *urm;} *l[mod];
int n,tip,val,hash;

void add()
{
	hash=val%mod;
	nod *q;
	for(q=l[hash];q;q=q->urm)
		if(q->inf==val)
			return;
	q=new nod;
	q->inf=val;
	q->urm=l[hash];
    l[hash]=q;
}

void erase()
{
	hash=val%mod;
	nod *q;
	for(q=l[hash];q;q=q->urm)
		if(q->inf==val)
			break;
	if(!q) return;
	q->inf=l[hash]->inf;
	q=l[hash];
	l[hash]=l[hash]->urm;
    delete q;
}

void check()
{
	hash=val%mod;
	for(nod *q=l[hash];q;q=q->urm)
		if(q->inf==val)
		{
			printf("1\n");
			return;
		}
	printf("0\n");
}

int main()
{
	int i;
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&tip,&val);
		if(tip==1) add();
		else if(tip==2) erase();
		else check();
	}
	fclose(stdout);
	return 0;
}