Pagini recente » Cod sursa (job #2103991) | Cod sursa (job #1002848) | Cod sursa (job #2481140) | Cod sursa (job #1566217) | Cod sursa (job #1368568)
#include <bits/stdc++.h>
using namespace std;
const int NIL = -1;
const int EMPTY = 0;
const int PRIME = 91;
const int MOD = (1 << 21) - 1;
int table[MOD + 1];
int F(const int x)
{
return x & MOD;
}
int nextPos(int pos)
{
return (pos + 1) & MOD;
}
int getPos(const int x)
{
int pos = F(x);
while ( table[pos] != EMPTY && table[pos] != x )
pos = nextPos(pos);
return pos;
}
int find(const int x)
{
return (table[ getPos(x) ] == x);
}
void erase(const int x)
{
int p = getPos(x);
if ( table[p] == x )
table[p] = NIL;
}
void insert(const int x)
{
table[ getPos(x) ] = x;
}
int main()
{
ifstream in("hashuri.in");
ofstream out("hashuri.out");
ios_base::sync_with_stdio( false );
for ( int i = 0; i <= MOD; ++i )
table[i] = EMPTY;
int N;
in >> N;
while ( N-- )
{
int tip, x;
in >> tip >> x;
switch(tip)
{
case 1: insert(x); break;
case 2: erase(x); break;
case 3: out << find(x) << "\n"; break;
default: cerr << "Error\n";
}
}
return 0;
}