Pagini recente » Cod sursa (job #2749089) | Cod sursa (job #3196035) | Cod sursa (job #2288589) | Cod sursa (job #2575377) | Cod sursa (job #723606)
Cod sursa(job #723606)
#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;
}