Pagini recente » Cod sursa (job #23435) | Cod sursa (job #2675349) | Cod sursa (job #2704666) | Cod sursa (job #1475639) | Cod sursa (job #2604748)
#include <bits/stdc++.h>
#define MOD 666013
#define MAXN 1000000
std::ifstream in("hashuri.in");
std::ofstream out("hashuri.out");
struct HashTable{
int lista[MOD], next[1 + MAXN];
int k, val[1 + MAXN];
void Insert(int element){
k++;
val[k] = element;
next[k] = lista[element % MOD];
lista[element % MOD] = k;
}
void Delete(int element){
int hsh = element % MOD;
int p = lista[hsh];
if(p == 0) return;
if(val[p] == element){
lista[hsh] = next[lista[hsh]];
return;
}
while(next[p] != 0 && val[next[p]] != element)
p = next[p];
if(next[p] != 0)
next[p] = next[next[p]];
}
bool bSearch(int element){
int p = lista[element % MOD];
while(p != 0 && val[p] != element)
p = next[p];
return (p != 0);
}
};
HashTable H;
int main()
{
int N;
in>>N;
for (int i=0; i<N; i++)
{
int op, nr;
in>>op>>nr;
if (op == 1)
if (H.bSearch(nr) == 0)
H.Insert(nr);
if (op == 2)
H.Delete(nr);
if (op == 3)
out<<H.bSearch(nr)<<"\n";
}
return 0;
}