Cod sursa(job #1427112)

Utilizator aciobanusebiCiobanu Sebastian aciobanusebi Data 1 mai 2015 15:51:36
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<iostream>
#include<fstream>
#define PRIME 393241
#define h(x) ((x) % PRIME)
using namespace std;

struct nod
{
	int info;
	nod *urm;
};

struct List
{
	nod* prim;
};
List T[PRIME];

void insert(List T[], int x)
{
	if (T[h(x)].prim == NULL)
	{
		T[h(x)].prim = new nod;
		T[h(x)].prim->info = x;
		T[h(x)].prim->urm = NULL;
	}
}

void erase(List T[], int x)
{
	if (T[h(x)].prim != NULL)
	{
		nod *p = T[h(x)].prim;
		nod *prec = NULL;
		while (x != p->info)
		{
			prec = p;
			p = p->urm;
		}
		if (prec == NULL)
		{
			delete T[h(x)].prim;
			T[h(x)].prim = NULL;
		}
		else
		{
			prec->urm = p->urm;
			delete p;
		}
	}
}

bool check(List T[], int x)
{
	if (T[h(x)].prim == NULL)
		return 0;
	else return 1;
}

int main()
{
	ifstream f("hashuri.in");
	ofstream g("hashuri.out");
	int op, x, n;
	f >> n;
	for(int i=1;i<=n;i++)
	{
		f >> op;
		f >> x;
		switch (op)
		{
		case 1:
			insert(T, x);
			break;
		case 2:
			erase(T, x);
			break;
		case 3:
			g << check(T, x)<<'\n';
			break;
		}
	}
	f.close();
	g.close();

	int i;
	cin >> i;
	return 0;
}