Cod sursa(job #615512)

Utilizator moonbeamElma Moonbeam moonbeam Data 9 octombrie 2011 21:28:12
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include<cstdio>
using namespace std;
#define NM 10012
#define MOD 10011
struct Node
{
	int value;
	Node *next;
} *a[NM];
bool find(int x, int poz)
{
	Node *curr=new Node;
	curr=a[poz];
	while (curr)
		if (curr->value==x)
			return true;
	return false;
}
void insert(int x, int poz)
{
	if (!a[poz])
	{
		a[poz]=new Node;
		a[poz]->value=x;
		a[poz]->next=0;
		return;
	}
	Node *curr=new Node;
	curr=a[poz];
	while (curr)
	{
		if (curr->value==x)
			return;
		curr=curr->next;
	}
	Node *nod=new Node;
	nod->value=x;
	nod->next=0;
	curr->next=nod;
}
void remove(int x, int poz)
{
	Node *curr=new Node;
	curr=a[poz];
	if (!curr)
		return;
	if (curr->value==x)
	{
		a[poz]=curr->next;
		delete curr;
		return;
	}
	Node *prev=new Node;
	while (curr && curr->value!=x)
	{
		prev=curr;
		curr=curr->next;
	}
	prev->next=curr->next;
	delete curr;
}
int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	int N,op,val;
	scanf("%d",&N);
	while (N--)
	{
		scanf("%d%d",&op,&val);
		if (op==1)
		{
			insert(val,val%MOD);
			continue;
		}
		if (op==2)
		{
			remove(val,val%MOD);
			continue;
		}
		printf("%d\n",find(val,val%MOD));
	}
	return 0;
}