Cod sursa(job #895882)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 27 februarie 2013 12:55:43
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
#include<cmath>
int n,z,c,x,i,h[66601][50];
bool ok;

inline int cod(int x)
{
	return (((int)((float)x*(float)(sqrt(5)-2)))%66601);
}

inline bool gas(int x)
{
	int c,i;
	c=cod(x);
	for(i=1;i<=h[c][0];++i)
		if(h[c][i]==x)return 1;
	return 0;
}

inline void add(int x)
{
	int c=cod(x);
	h[c][++h[c][0]]=x;
}

inline void del(int x)
{
	int i=1,c=cod(x);
	while(h[c][i]!=x)
		++i;
	--h[c][0];
	while(i<=h[c][0]) 
	{
		h[c][i]=h[c][i+1];
		++i;
	}
}

int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;++i)
	{
		scanf("%d%d",&z,&x);
		switch(z)
		{
		case 1:
			{
				if(!gas(x))add(x);
				break;
			}
		case 2:
			{
				if(gas(x))del(x);
				break;
			}
		case 3:
			{
				printf("%d\n",gas(x));
				break;
			}
		}
	}
	return 0;
}