Pagini recente » Monitorul de evaluare | Cod sursa (job #104479) | Cod sursa (job #2021515) | Cod sursa (job #409739) | Cod sursa (job #1427114)
#include<iostream>
#include<fstream>
#define PRIME 3079
#define h(x) ((x) % PRIME)
using namespace std;
struct nod
{
int info;
nod *urm;
};
struct List
{
nod* prim;
};
List T[PRIME];
void insert(List T[], int x)
{
if (T[h(x)].prim == NULL)
{
T[h(x)].prim = new nod;
T[h(x)].prim->info = x;
T[h(x)].prim->urm = NULL;
}
}
void erase(List T[], int x)
{
if (T[h(x)].prim != NULL)
{
nod *p = T[h(x)].prim;
nod *prec = NULL;
while (x != p->info)
{
prec = p;
p = p->urm;
}
if (prec == NULL)
{
delete T[h(x)].prim;
T[h(x)].prim = NULL;
}
else
{
prec->urm = p->urm;
delete p;
}
}
}
bool check(List T[], int x)
{
if (T[h(x)].prim == NULL)
return 0;
else return 1;
}
int main()
{
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int op, x, n;
f >> n;
for(int i=1;i<=n;i++)
{
f >> op;
f >> x;
switch (op)
{
case 1:
insert(T, x);
break;
case 2:
erase(T, x);
break;
case 3:
g << check(T, x)<<'\n';
break;
}
}
f.close();
g.close();
int i;
cin >> i;
return 0;
}