Cod sursa(job #1709672)

Utilizator Vera.GabrielaBabat Vera Vera.Gabriela Data 28 mai 2016 13:20:48
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <stdio.h>


using namespace std;
#define MOD 666013

int N;
struct nod
{
	int valoare;
	nod *next;
};
nod *H[MOD];

int cautare(int x)
{
	nod *p;
	int r;
	r = x%MOD;
	for (p = H[r]; p != NULL; p = p->next)
	{
		if (p->valoare == x)
			return 1;
	}
	return 0;
}
void inserare(int x)
{
	int r=cautare(x);
	nod *p;
	if (r == 0)
	{
		p = new nod;
		p->valoare = x;
		p->next = H[x%MOD];
		H[x%MOD] = p;
	}
}

void stergere(int x)
{
	int r = cautare(x);
	int v=x%MOD;
	nod *p,*rr,*q;
	if (r == 1)
	{
		if (H[v]->valoare == x)
		{
			p = H[v];
			H[v] = H[v]->next;
			delete p;
		}
		else
		{
			for (p = H[v]; p->next != NULL; p = p->next)
			{
				if (p->next->valoare == x)
				{
					q = p->next;
					rr = q->next;
					p->next = rr;
					delete q;
					break;
				}
			}
		}
	}
}

int main()
{
	int op, x;

	freopen("hashuri.in", "r", stdin);
	freopen("hashuri.out", "w", stdout);

	for (scanf("%d", &N); N; --N)
	{
		scanf("%d %d", &op, &x);
		if (op == 1) // inserare
		{
			inserare(x);
			continue;
		}
		if (op == 2) // stergere
		{
			stergere(x);
			continue;
		}
		printf("%d\n", cautare(x));
	}

	return 0;
}