Cod sursa(job #723606)

Utilizator danieladDianu Daniela danielad Data 25 martie 2012 17:54:20
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<iostream>
#include<fstream>
using namespace std;
const int m=666667;
class hash{
	int T[m];
	int hash_size;
public:
	hash(int size){
		hash_size=size;
	}
	int h(int,int);
	int cauta(int k);
	void insert(int k);
	void sterge(int k);
};
hash ob(m);
int hash::h(int k,int i){
	return (k%m+i*(1+k%(m-2)))%m;
}
int hash::cauta(int k){
	int i,j;
	for(i=0;i<m;i++){
		j=h(k,i);
		if(T[j]==0)
			return -1;
		if(T[j]==k)
			return j;
	}
}
void hash::insert(int k){
	int j,i;
	if(cauta(k)==-1)
		for(i=0;i<m;i++){
		j=h(k,i);
		if(T[j]<=0){
			T[j]=k;
			i=m-1;
		}
	}
}
void hash::sterge(int k){
	int j;
	if(cauta(k)!=-1){
		j=cauta(k);
		T[j]=-1;
	}
}
int main(){
	ifstream f("hashuri.in");
	ofstream g("hashuri.out");
	int x,n;
	short int op;
	f>>n;
	for(int i=1;i<=n;i++){
		f>>op>>x;
		if(op==1)
			ob.insert(x);
		if(op==2)
			ob.sterge(x);
		if(op==3)
			if(ob.cauta(x)!=-1)
				g<<"1\n";
			else
				g<<"0\n";
	}
	
	return 0;
}