Pagini recente » Cod sursa (job #2502992) | Cod sursa (job #1842912) | Cod sursa (job #2399645) | Cod sursa (job #2293921) | Cod sursa (job #805468)
Cod sursa(job #805468)
#include <iostream>
#include <fstream>
using namespace std;
#define m 896009
#define mod 666013
struct nod
{
int inf;
nod *adr;
}*l[m];
void init(/*nod *&l*/)
{
int i;
for (i=0;i<m;i++)
{
l[i] = new nod;
l[i]->inf = 0;
l[i]->adr = NULL;
}
}
void add(/*nod *l, */int x)
{
if (l[x%m] == NULL)
{
l[x%m] = new nod;
l[x%m]->inf = 0;
nod *pateu = new nod;
pateu->inf = x;
pateu->adr = NULL;
l[x%m]->adr = pateu;
return;
}
nod *parc = l[x%m];
bool gasit = false;
while (parc->adr && !gasit)
{
parc = parc->adr;
if (parc->inf == x) gasit = true;
}
if (gasit) return;
nod *aux = new nod;
aux->inf = x; aux->adr = NULL;
parc->adr = aux;
}
void del(/*nod *l, */int x)
{
if (l[x%m] == NULL) return;
nod *parc = l[x%m];
bool gasit = false;
while (parc->adr && !gasit)
if (parc->adr->inf == x) gasit = true;
else parc = parc->adr;
if (!gasit) return;
nod *aux = parc->adr;
if (parc->adr->adr == NULL)
{
parc->adr = NULL;
delete aux;
}
else
{
parc->adr = aux->adr;
delete aux;
}
}
bool search(/*nod *&l, */int x)
{
if (l[x%m] == NULL) return false;
nod *parc = l[x%m];
while (parc->adr)
{
parc = parc->adr;
if (parc->inf == x) return true;
}
return false;
}
int main()
{
ifstream in("hashuri.in"); ofstream out("hashuri.out");
int n, i, c, x;
//init(/*l*/);
in>>n;
for (i=0;i<n;i++)
{
in>>c>>x;
switch (c)
{
case 1: add(/*l, */x); break;
case 2: del(/*l, */x); break;
case 3: out<<search(/*l, */x)<<endl; break;
}
}
return 0;
}