Pagini recente » Cod sursa (job #1940869) | Cod sursa (job #1336065) | Cod sursa (job #1826068) | Cod sursa (job #2170482) | Cod sursa (job #1301749)
#include <fstream>
#include <cstring>
#include <iostream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int size=2000001;
class Hashtable
{
private:
struct slot
{
int key,state;
slot() {state=0;}
}v[size];
int hash(int key)
{
return (key%size);
}
public:
Hashtable()
{
memset(v,0,sizeof(v));
}
void insert(int key)
{
int h=hash(key);
while(v[h].state==1 && v[h].key!=key)
{
h++;
if(h>=size) h=0;
}
if(!v[h].state==1)
{
v[h].key=key;
v[h].state=1;
}
}
bool lookup(int key)
{
int h=hash(key);
while(v[h].state==1)
h++;
if(v[h].key==key) return 1;
else return 0;
}
void remove(int key)
{
int h=hash(key);
while(v[h].state!=0 && v[h].key!=key)
h++;
if(v[h].key==key)
v[h].state=-1;
}
}H;
int main()
{
int T,q,x;
f>>T;
while(T--)
{
f>>q>>x;
switch (q)
{
case 1: H.insert(x); break;
case 2: H.remove(x); break;
case 3: g<<H.lookup(x)<<'\n';
}
}
cout<<clock();
}