Pagini recente » Cod sursa (job #2070476) | Cod sursa (job #3003884) | Cod sursa (job #2516246) | Cod sursa (job #507485) | Cod sursa (job #1414427)
#include <bits/stdc++.h>
using namespace std;
const int MOD = (1 << 21) - 1;
const int EMPTY = -1;
const int ERASED = -2;
int table[MOD + 1];
void insert(int key)
{
int p = key & MOD;
while (table[p] != EMPTY && table[p] != ERASED)
p = (p + 1) & MOD;
table[p] = key;
}
bool find(int key)
{
int p = key & MOD;
while (table[p] != EMPTY && table[p] != key)
p = (p + 1) & MOD;
return (table[p] == key);
}
void erase(int key)
{
int p = key & MOD;
while (table[p] != EMPTY && table[p] != key)
p = (p + 1) & MOD;
if (table[p] == key)
table[p] = ERASED;
}
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;
}