Cod sursa(job #713076)

Utilizator danieladDianu Daniela danielad Data 14 martie 2012 10:42:16
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<iostream>
#include<fstream>
using namespace std;
const int m=666667;
int T[m],n;

int hash(int k,int i){
	return (k%m+i*(1+k%(m-2)))%m;
}

int cauta(int T[],int k){
	int i,j;
	for(i=0;i<m;i++){
		j=hash(k,i);
		if(T[j]==0)
			return -1;
		if(T[j]==k)
			return j;
	}
}
	
void insert(int T[],int k){
	int j,i;
	if(cauta(T,k)==-1)
		for(i=0;i<m;i++){
		j=hash(k,i);
		if(T[j]<=0){
			T[j]=k;
			i=m-1;
		}
	}
}

void sterge(int T[],int k){
	int j;
	if(cauta(T,k)!=-1){
		j=cauta(T,k);
		T[j]=-1;
	}
}
int main(){
	ifstream f("hashuri.in");
	ofstream g("hashuri.out");
	int x;
	short int op;
	f>>n;
	for(int i=1;i<=n;i++){
		f>>op>>x;
		if(op==1)
			insert(T,x);
		if(op==2)
			sterge(T,x);
		if(op==3)
			if(cauta(T,x)!=-1)
				g<<"1\n";
			else
				g<<"0\n";
	}
	
	return 0;
}