Cod sursa(job #381522)

Utilizator allynaAlina S allyna Data 10 ianuarie 2010 20:40:59
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
int a[1001000][2],s[699050],p=699037,q;
int cauta(int k)
{
	int r=k%p,t,poz;
	t=s[r];
	poz=0;
	while(t&&!poz)
		if(a[t][0]==k)
			poz=t;
		else
			t=a[t][1];
	return poz;
}

void adauga(int k)
{
	int r=k%p,poz;
	poz=cauta(k);
	if(!poz)
	{
		a[++q][0]=k;
		a[q][1]=s[r];
		s[r]=q;
	}
}
void sterge(int k)
{
	int poz;
	poz=cauta(k);
	if(poz)
		a[poz][0]=-k;
}
int main()
{
	int i,n,op,x;
	freopen("hashuri.in","rt",stdin);
	freopen("hashuri.out","wt",stdout);
    scanf("%d",n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",op,x);
		if(op==1)
			adauga(x);
		else
			if(op==2)
				sterge(x);
			else
				if(cauta(x))
					printf("1\n");
				else 
					printf("0\n");
	}
	return 0;
}