Pagini recente » Cod sursa (job #1285372) | Cod sursa (job #2469759) | Cod sursa (job #1851552) | Cod sursa (job #2348321) | Cod sursa (job #1841330)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int n, op, el, valoare = 13;
struct nod
{
int val;
nod *nxt;
} *p[666013], *u[666013];
int hashing(int el)
{
el %= 666013;
el += 2;
el*= valoare;
el%= 666013;
return el;
}
bool verificare(int el)
{
int h = hashing(el);
nod *k;
k = p[h];
while(k->val != 0 and k->val != el)
{
k = k->nxt;
}
if(k->val == el) return 1;
else return 0;
}
void adaugare(int el)
{
int h= hashing(el);
nod *k;
k = new(nod);
k->val = 0;
u[h]->val = el;
u[h]->nxt = k;
u[h] = k;
}
void stergere(int el)
{
int h = hashing(el);
nod *k;
k = new(nod);
k = p[h];
while(k->val != 0 and k->val != el)
{
k = k->nxt;
}
if(k->val == el)
{
k->val = -1;
}
}
int main()
{
for(int i = 0; i < 666013; ++i)
{
p[i] = new(nod);
u[i] = new(nod);
p[i]->val = -1;
p[i]->nxt = u[i];
u[i]->val = 0;
}
fin>>n;
for(int i = 1; i <= n; ++i)
{
fin>>op>>el;
if(op == 1)
{
if(verificare(el) == 0) adaugare(el);
}
else if(op == 2)
{
stergere(el);
}
else if(op == 3)
{
fout<<verificare(el)<<'\n';
}
}
}