Pagini recente » Cod sursa (job #2450815) | Cod sursa (job #1911971) | Cod sursa (job #162572) | Cod sursa (job #951369) | Cod sursa (job #1846192)
#include <fstream>
#define W 1000003
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
struct NOD
{
int x;
NOD *urm;
};
int H(int x)
{
return x%W;
}
void add(NOD*&prim, int nr);
void del(NOD*&prim, int nr);
bool verif(NOD*&prim, int nr);
int n, op, nr;
NOD*l[1000005];
int main()
{
int i;
fin >> n;
for (i=1;i<=n;i++)
{
fin >> op >> nr;
if (op == 1)
add(l[H(nr)],nr);
else if (op == 2)
del(l[H(nr)],nr);
else fout << verif(l[H(nr)],nr) << '\n';
}
return 0;
}
void add(NOD*&prim, int nr)
{
NOD*p,*q;
if (!prim)
{
prim = new NOD;
prim->urm = NULL;
prim->x = nr;
return;
}
p = prim;
while (p->urm)
{
if (p->x == nr)
return;
p = p->urm;
}
if (p->x == nr)
return;
q = new NOD;
q->urm = NULL;
q->x = nr;
p->urm = q;
}
void del(NOD*& prim, int nr)
{
NOD*p,*q;
if (!prim)
return;
if (prim->x == nr)
{
p = prim;
prim = prim->urm;
delete p;
return;
}
p = prim;
while (p->urm && p->urm->x!=nr)
p = p->urm;
if (p->urm)
{
q = p->urm;
p->urm = p->urm->urm;
delete q;
}
}
bool verif(NOD*&prim, int nr)
{
NOD*p;
p = prim;
while (p)
{
if (p->x == nr)
return 1;
p = p->urm;
}
return 0;
}