Pagini recente » Cod sursa (job #2631246) | Cod sursa (job #2754445) | Cod sursa (job #996450) | Diferente pentru runda/cercel_e_gay_runda_2 intre reviziile 3 si 2 | Cod sursa (job #1190784)
#include<cstdio>
#include<vector>
using namespace std;
class Hash
{
int MOD;
vector<vector<int> > H;
public:
Hash(int);
void insert(int);
void erase(int);
int find(int);
};
Hash::Hash(int _MOD)
{
MOD = _MOD;
H.resize(MOD+5);
}
void Hash::insert(int x)
{
int r = x%MOD;
vector<int>::iterator it;
for(it = H[r].begin(); it != H[r].end(); it++)
if(*it == x) return;
H[r].push_back(x);
}
void Hash::erase(int x)
{
int r = x%MOD;
vector<int>::iterator it;
for(it = H[r].begin(); it != H[r].end(); it++)
if(*it == x)
{
swap(*it,H[r].back());
H[r].pop_back();
return;
}
}
int Hash::find(int x)
{
int r = x%MOD;
vector<int>::iterator it;
for(it = H[r].begin(); it != H[r].end(); it++)
if(*it == x) return 1;
return 0;
}
void Read(),Solve();
int N;
Hash H(100003);
int main()
{
Read();
Solve();
return 0;
}
void Read()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&N);
}
void Solve()
{
int t,x;
for(; N; --N)
{
scanf("%d%d",&t,&x);
if(t == 1) H.insert(x);
else if(t == 2) H.erase(x);
else printf("%d\n",H.find(x));
}
}