Cod sursa(job #482754)

Utilizator Addy.Adrian Draghici Addy. Data 4 septembrie 2010 22:13:29
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>

const int MOD = 666013;

struct nod {
	int v;
	nod *next;
} *HASH[MOD + 1];

int n, tip, x;

void adauga (nod*&, int), sterge (nod*&, int), cauta (nod*, int);

int main () {
	
	freopen ("hashuri.in", "r", stdin);
	freopen ("hashuri.out", "w", stdout);
	
	scanf ("%d", &n);
	
	while (n--) {
		scanf ("%d %d", &tip, &x);
		
		switch (tip) {
			case 1: adauga (HASH[x % MOD], x); break;
			case 2: sterge (HASH[x % MOD], x); break;
			case 3: cauta (HASH[x % MOD], x); break;
		}
	}
	
	return 0;
}

void adauga (nod *&H, int x) {
	
	nod *p;
	
	p = new nod;
	p -> v = x, p -> next = H;
	H = p;
}

void sterge (nod *&H, int x) {
	
	nod *p, *aux;
	
	for (p = H; p != NULL; p = p -> next)
		if (p -> v == x) {
			if (p == H) {
				aux = H, H = H -> next;
				delete aux;
			}
			else {
				aux = p, p = p -> next;
				delete aux;
			}
			
			return;
		}
}

void cauta (nod *H, int x) {
	
	nod *p;
	
	for (p = H; p != NULL; p = p -> next)
		if (p -> v == x) {
			printf ("1\n");
			return;
		}
	
	printf ("0\n");
}