Pagini recente » Cod sursa (job #228732) | Cod sursa (job #2729680) | Cod sursa (job #2000038) | Cod sursa (job #2592025) | Cod sursa (job #2005691)
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
#define P1 1300111
#define P2 1300097
list <int> H1[P1+3],H2[P2+3];
int N,op,x;
void InserareHash(int key)
{
int ad1,ad2;
ad1 = key % P1;
ad2 = key % P2;
if( H1[ad1].size() < H2[ad2].size() )
H1[ad1].push_back(key);
else
H2[ad2].push_back(key);
}
void StergereHash(int key)
{
int ad1,ad2;
ad1 = key % P1;
ad2 = key % P2;
for( list<int>::iterator it = H1[ad1].begin() ; it != H1[ad1].end() ; it++)
if( *it == key )
{
H1[ad1].erase(it);
return;
}
for( list<int>::iterator it = H2[ad2].begin() ; it != H2[ad2].end() ; it++)
if( *it == key )
{
H2[ad2].erase(it);
return;
}
}
bool CautareHash(int key)
{
int ad1,ad2;
ad1 = key % P1;
ad2 = key % P2;
for( list<int>::iterator it = H1[ad1].begin() ; it != H1[ad1].end() ; it++)
if( *it == key )
return 1;
for( list<int>::iterator it = H2[ad2].begin() ; it != H2[ad2].end() ; it++)
if( *it == key )
return 1;
return 0;
}
int main()
{
f>>N;
for(int i = 1 ; i <= N ; i++)
{
f>>op>>x;
switch(op)
{
case 1 : InserareHash(x); break;
case 2 : StergereHash(x); break;
case 3 : g<<CautareHash(x)<<'\n'; break;
}
}
return 0;
}