Pagini recente » Monitorul de evaluare | Cod sursa (job #112069) | Cod sursa (job #1190447) | Istoria paginii runda/rocky1 | Cod sursa (job #2744915)
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
class Hash_table{
int nr;
list<int> *table;
public:
Hash_table(int);
int hash_fuction(int);
void adauga(int);
void sterge(int);
bool exista(int);
};
Hash_table::Hash_table(int i){
this->nr=i;
table=new list<int> [i];
}
int Hash_table::hash_fuction(int x){
return x%nr;
}
void Hash_table::adauga(int x){
int i;
i=hash_fuction(x);
table[i].push_back(x);
}
void Hash_table::sterge(int x){
int i;
i=hash_fuction(x);
list<int>::iterator j;
for(j=table[i].begin();j!=table[i].end();j++){
if(*j==x)
break;
}
if(j!=table[i].end())
table[i].erase(j);
}
bool Hash_table::exista(int x){
int i;
i=hash_fuction(x);
list<int>::iterator j;
for(j=table[i].begin();j!=table[i].end();j++){
if(*j==x)
break;
}
return (j!=table[i].end());
}
int n,p,x;
int main(){
Hash_table h(100003);
fin>>n;
for(int i=0;i<n;i++){
fin>>p>>x;
if(p==1)
if(h.exista(x)==0)
h.adauga(x);
if(p==2)
h.sterge(x);
if(p==3){
if(h.exista(x))
fout<<1<<'\n';
else
fout<<0<<'\n';
}
}
}