Cod sursa(job #806191)
#include <iostream>
#include <fstream>
using namespace std;
#define m 666013
struct nod
{
int inf;
nod *adr;
}*l[m];
void add(int x)
{
const int mod = x%m;
if (l[mod] == NULL)
{
l[mod] = new nod;
l[mod]->inf = x;
l[mod]->adr = NULL;
return;
}
nod *p = new nod;
p->inf = x;
p->adr = l[mod];
l[mod] = p;
}
bool search(int x)
{
const int mod = x%m;
if (l[mod] == NULL) return false;
nod *p = l[mod];
while (p)
{
if (p->inf == x) return true;
p = p->adr;
}
return false;
}
void del(int x)
{
const int mod = x%m;
nod *p = l[mod];
if (p->inf == x)
{
nod *aux = p;
p = p->adr;
delete aux;
return;
}
for (p=l[mod]; p->adr; p = p->adr)
if (p->adr->inf == x)
{
nod *aux = p->adr;
p->adr = aux->adr;
delete aux;
return;
}
}
int main()
{
ifstream in("hashuri.in"); ofstream out("hashuri.out");
int n, i, c, x;
in>>n;
for (i=0;i<n;i++)
{
in>>c>>x;
switch (c)
{
case 1: if (!search(x)) add(x); break;
case 2: if (search(x)) del(x); break;
case 3: out<<search(x)<<endl; break;
}
}
}