Cod sursa(job #324397)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 16 iunie 2009 01:32:15
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
using namespace std;
fstream fin ("hashuri.in",ios::in);
fstream fout("hashuri.out",ios::out);
#define NR 666013
int n;
struct Hash{
	int info;
	Hash *urm;
};
Hash *H[666050];

int add(int ce){
	Hash *p;
	int unde = ce % NR;
	for (p = H[unde]; p != NULL; p = p->urm)
		if (p->info == ce) return 0;
	p = new Hash;
	p->info = ce;
	p->urm = H[unde];
	H[unde] = p;
	return 0;
};

int del(int ce){
	int unde;
	Hash *p, *q;
	unde = ce % NR;
	if (H[unde] == NULL) return 0;
	if (H[unde]->info == ce){
		q = H[unde];
		H[unde] = H[unde]->urm;
		delete q;
		return 1;
	};
	for (p = H[unde]; p->urm != NULL; p = p->urm)
		if (p->urm->info == ce){
			p->urm = q;
			p->urm = q->urm;
			delete q;
			return 1;
		}
	return 0;
};

int search(int ce){
	Hash *p;
	int unde = ce % NR;
	for (p = H[unde]; p != NULL; p = p->urm)
		if (p->info == ce) return 1;
	return 0;
};

int main(){
	int op, val;
	fin>>n;
	for (int i = 1; i <= n; i++){
		fin>> op >> val;
		switch (op){
			case 1 :	add(val);
						break;
			case 2 :	del(val);
						break;
			case 3 :	if (search(val)) fout<<"1\n";
						else fout<<"0\n";
						break;
		};
	};
};