Pagini recente » Cod sursa (job #476625) | Cod sursa (job #102374) | Cod sursa (job #2930760) | Cod sursa (job #2173071) | Cod sursa (job #1799072)
#include<cstdio>
#include<vector>
using namespace std;
#define HASH_TABLE_CONST 666013
class HASH{
public:
HASH();
void tip1(int x);
void tip2(int x);
bool tip3(int x);
private:
int *hash_table;
vector< pair<int, int> > elem;
};
void HASH::tip1(int x){
int rem=x%HASH_TABLE_CONST, elem_poz;
elem_poz=elem.size();
elem.push_back(make_pair(0, rem));
// printf("%d%d", elem[1].first, elem[1].second);
if(hash_table[rem]==0)
hash_table[rem]=elem_poz;
else{
int p=hash_table[rem], prev;
while(p){
prev=p;
if(elem[p].second==x) return;
p=elem[p].first;
}
elem[prev].first=elem_poz;
}
}
void HASH::tip2(int x){
int rem=x%HASH_TABLE_CONST;
if(hash_table[rem]==0)
return;
else{
int p=hash_table[rem], prev;
if(elem[p].second==x)
hash_table[rem]=elem[p].first;
else
while(p){
if(elem[p].second==x){
elem[prev].first=elem[p].first;
}
prev=p;
p=elem[p].first;
}
}
}
bool HASH::tip3(int x)
{
int rem=x%HASH_TABLE_CONST, p;
p=hash_table[rem];
while(p){
if(elem[p].second==x)
return 1;
p=elem[p].first;
}
return 0;
}
HASH::HASH(){
hash_table=new int[HASH_TABLE_CONST];
elem.push_back(make_pair(0, 0));
}
int main(){
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
HASH myhesh;
int n, t, e;
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d%d", &t, &e);
switch(t){
case 1: myhesh.tip1(e);break;
case 2: myhesh.tip2(e);break;
case 3: printf("%d\n", myhesh.tip3(e));
}
}
return 0;
}